Я бы поспорил, что провальный тест должен быть добавлен, но не явно как «провальный тест».
Как указывает @BenVoigt в своем ответе , провальный тест не обязательно «нарушает сборку». Я предполагаю, что терминология может варьироваться от команды к команде, но код все еще компилируется, и продукт может все еще поставляться с провальным тестом.
Что вы должны спросить себя в этой ситуации,
Какие тесты предназначены для выполнения?
Если тесты существуют только для того, чтобы все чувствовали себя хорошо по отношению к коду, то добавление неудачного теста просто для того, чтобы заставить всех чувствовать себя плохо по поводу кода, не кажется продуктивным. Но насколько продуктивными являются тесты?
Я утверждаю, что тесты должны отражать требования бизнеса . Таким образом, если обнаружена «ошибка», которая указывает на то, что требование не выполнено должным образом, то это также указывает на то, что тесты не полностью или полностью отражают бизнес-требования.
Это ошибка, которая должна быть исправлена в первую очередь. Вы не «добавляете провальный тест». Вы исправляете тесты, чтобы более точно отразить требования бизнеса. Если код не проходит эти тесты, это хорошо. Это означает, что тесты делают свою работу.
Приоритет исправления кода определяется бизнесом. Но до тех пор, пока тесты не будут установлены, может ли этот приоритет быть действительно определен? Бизнес должен быть вооружен знанием того, что именно терпит неудачу, как оно терпит неудачу, и почему оно терпит неудачу, чтобы принимать свои решения в приоритетном порядке. Тесты должны указать это.
Испытания, которые не проходят полностью, - это не плохо. Это создает большой артефакт известных проблем, которые должны быть расставлены по приоритетам и соответственно обработаны. Однако наличие тестов, которые не полностью тестируют , является проблемой. Это ставит под сомнение ценность самих тестов.
Сказать это по-другому ... Сборка уже сломана. Все, что вы решаете, стоит ли привлекать внимание к этому факту.