Ответ 1
Мне интересно, если это плохая практика, и если есть лучший способ сделать это.
Да и да.
он не завершит проверку, исключив исключение, если совпадение отсутствует или больше одного совпадения.
Не пропустите тест, выбросив исключение. Откажитесь от теста, пропустив тест. У вашей тестовой среды есть механизм для утверждения условия, проверяемого тестом. Вы купили эту тестовую структуру, и теперь вы сопротивляетесь ее функциям. Используйте тестовую среду, поскольку она была предназначена для использования, или, если вам не нравится, откажитесь от нее и выберите структуру, которая вам нравится лучше. Но не делайте end-run вокруг своих механизмов.
Неожиданные исключения не обязательно являются ошибками тестирования; они могут быть ошибочными. Вы должны быть в состоянии сказать разницу. Способ, которым вы говорите: если исключение возникает в тестируемом коде, это ошибка в коде. Если он возникает в тестовом коде, это ошибка в тесте. И теперь вы пойдете и обнаружите ошибку в тестируемом коде, сделав бросок кода тестирования. И теперь сложнее сказать, где ошибка. Не заставляйте ваше будущее думать, что это сложно; не пишите удивительный код, который преднамеренно избегает соглашений тестовой платформы.