Хотя существуют способы не допустить выполнения модульных тестов, какова ценность проверки при неудачных модульных тестах?
Я буду использовать простой пример: чувствительность к регистру. Текущий код чувствителен к регистру. Допустимый вход в метод - «Cat», и он будет возвращать перечисление Animal.Cat. Однако желаемая функциональность метода не должна учитывать регистр символов. Таким образом, если описанный метод был передан как «cat», он может вернуть что-то вроде Animal.Null вместо Animal.Cat, и модульный тест завершится неудачей. Хотя простое изменение кода сделает эту работу, более сложная проблема может занять несколько недель, но выявление ошибки с помощью модульного теста может быть менее сложной задачей.
Приложение, которое в настоящее время анализируется, имеет 4 года кода, который «работает». Однако недавние обсуждения, касающиеся модульных тестов, обнаружили недостатки в коде. Некоторым просто нужна явная документация по реализации (например, с учетом регистра или нет) или код, который не выполняет ошибку в зависимости от того, как она в данный момент вызывается. Но могут быть созданы модульные тесты, выполняющие определенные сценарии, которые приведут к появлению ошибки и являются допустимыми входными данными.
Какова ценность проверки в модульных тестах, которые осуществляют ошибку до тех пор, пока кто-то не сможет исправить код?
Следует ли пометить этот модульный тест игнорированием, приоритетом, категорией и т. Д., Чтобы определить, была ли сборка успешной на основании выполненных тестов? В конечном итоге должен быть создан модульный тест для выполнения кода, как только кто-то исправит его.
С одной стороны, это показывает, что выявленные ошибки не были исправлены. С другой стороны, в журналах могут отображаться сотни неудачных модульных тестов, и будет трудно найти те, которые должны быть неудачными, по сравнению со сбоями из-за регистрации кода.