Argumentowałbym, że test negatywny powinien zostać dodany, ale nie jawnie jako „test negatywny”.
Jak podkreśla @BenVoigt w swojej odpowiedzi , nieudany test niekoniecznie „psuje kompilację”. Wydaje mi się, że terminologia może się różnić w zależności od zespołu, ale kod nadal się kompiluje, a produkt może zostać dostarczony z testem zakończonym niepowodzeniem.
W tej sytuacji powinieneś zadać sobie pytanie:
Jakie testy mają zostać wykonane?
Jeśli testy są po to, aby wszyscy czuli się dobrze z kodem, wówczas dodanie testu zakończonego niepowodzeniem tylko po to, aby wszyscy poczuli się źle z powodu kodu, nie wydaje się produktywne. Ale w takim razie, jak wydajne są testy?
Twierdzę, że testy powinny odzwierciedlać wymagania biznesowe . Jeśli więc zostanie znaleziony „błąd” wskazujący, że wymaganie nie jest właściwie spełnione, oznacza to również , że testy nie odzwierciedlają poprawnie lub w pełni wymagań biznesowych.
To jest błąd, który należy naprawić w pierwszej kolejności. Nie dodajesz „testu zakończonego niepowodzeniem”. Jesteś poprawiania testów aby być bardziej dokładnym odzwierciedleniem wymagań biznesowych. Jeśli kod nie przejdzie tych testów, to dobrze. Oznacza to, że testy wykonują swoją pracę.
Priorytet ustalenia kodu ma zostać określony przez firmę. Ale czy dopóki testy nie zostaną naprawione, czy rzeczywiście można ustalić ten priorytet? Firma powinna być uzbrojona w wiedzę na temat tego, co dokładnie zawodzi, jak się zawodzi i dlaczego zawodzi, aby podejmować decyzje dotyczące priorytetów. Testy powinny to wskazać.
Posiadanie testów, które nie są w pełni zaliczone, nie jest złą rzeczą. Tworzy wielki artefakt znanych problemów, które należy traktować priorytetowo i odpowiednio nimi traktować. Problemem są jednak testy, które nie są w pełni testowane . Podważa wartość samych testów.
Mówiąc inaczej: kompilacja jest już zepsuta. Ty decydujesz tylko, czy zwrócić uwagę na ten fakt.