Ответ
Да, код необходимо исправить. Тесты являются формальной спецификацией ожидаемого поведения. Провал теста означает, что реализация не соответствует заявленным требованиям, даже если её текущее поведение кажется логичным.
Пример:
// Тест: assertEquals(5, calculator.sum(2, 3));
public int sum(int a, int b) {
return a * b; // Ошибка! Тест ожидает сложение.
}
Здесь код выполняет умножение без ошибок, но это баг, так как нарушена контрактная спецификация метода sum.
Исключение: Если тест устарел, ошибочен или проверяет нерелевантные детали реализации (например, внутреннюю структуру объекта), то править нужно тест, а не код. Такое изменение требует ревью и согласования с командой.