Я б заперечував, що тест, який провалюється, повинен бути доданий, але не явно як "провальний тест".
Як зазначає @BenVoigt у своїй відповіді , невдалий тест не обов'язково "зламає збірку". Я думаю, що термінологія може відрізнятися від команди до команди, але код все-таки складається, і продукт все ще може поставлятися з провальним тестом.
Що ви повинні запитати себе в цій ситуації, це
Які тести мають бути виконані?
Якщо тести існують лише для того, щоб усі відчували себе добре щодо коду, то додавання невдалого тесту лише для того, щоб усі відчували себе погано щодо коду, не здаються продуктивними. Але тоді, наскільки продуктивними є тести в першу чергу?
Моє твердження - тести повинні бути відображенням вимог бізнесу . Отже, якщо виявлено "помилку", яка вказує на те, що вимога не виконана належним чином, це також є свідченням того, що тести не відповідають належним чином або повністю відображають ділові вимоги.
Це помилка, яку потрібно виправити спочатку. Ви не "додаєте невдалий тест". Ви виправляєте тести, щоб бути більш точним відображенням вимог бізнесу. Якщо код не зможе пройти ці тести, це добре. Це означає, що тести роблять свою справу.
Пріоритет фіксації коду повинен визначати бізнес. Але поки тести не будуть зафіксовані, чи можна справді визначити цей пріоритет? Бізнес повинен бути озброєний знаннями того, що саме не вдається, як він провалюється, і чому він провалюється, щоб приймати свої рішення пріоритетно. Тести повинні це вказувати.
Тести, які не проходять повністю, не є поганою справою. Це створює чудовий артефакт відомих питань, яким слід розставити пріоритет та вирішити їх відповідно. Однак тести, які не повністю перевіряються , є проблемою. Це ставить під сумнів цінність самих тестів.
Якщо сказати іншим способом ... Збірка вже порушена. Все, що ви вирішили - це звертати увагу на цей факт чи ні.