Я согласен, что следует избегать лишних тестов. Но - что делает тесты излишними? Я считаю, что тест является избыточным, если все потенциальные ошибки, которые этот тест намеревается обнаружить, также должны быть обнаружены оставшимися тестами.
Что отличает юнит-тестирование и тестирование взаимодействия (то есть интеграционное тестирование) ), подсистемное тестирование (так называемое компонентное тестирование или функциональное тестирование) является соответствующей целью тестирования, а это означает, что ошибки, которые должен отследить соответствующий тест.
Под модульным тестированием понимаются те ошибки, которые вы можно найти, протестировав небольшие (даже минимально небольшие) отдельные части программного обеспечения. Так как модульное тестирование является самым ранним этапом тестирования, который также имеет шанс глубже проникнуть в код go, практическое правило заключается в том, что если ошибка может быть уже найдена при модульном тестировании, вы действительно должны найти ее с помощью модульного тестирования. вместо того, чтобы пытаться поймать эту ошибку в тестах более высокого уровня. Похоже, это соответствует вашему подходу к «устранению избыточных функциональных тестов», где «одни и те же тесты могут выполняться на уровне модульного тестирования». Например, если вы стремитесь найти потенциальные ошибки в случае арифметического переполнения c в некотором коде, это должно быть сделано именно с помощью модульного тестирования. Попытка найти ту же проблему на уровне интеграционного или подсистемного тестирования была бы неправильным подходом.
Однако вы должны знать, что, возможно, цель подсистемного теста (= функциональный тест) если у нас с тобой одна и та же терминология) был другой, чем похожий тест на уровне юнит-теста. На уровне подсистемы вы можете стремиться отлавливать ошибки интеграции, например, если объединены неправильные версии классов (в этом случае соответствующие модульные тесты каждого из классов могут пройти). Подсистемные тесты также могут обнаружить ошибки системы сборки, например, если сгенерированные классы для среды написанного вручную кода не сгенерированы должным образом. И т. Д.
Поэтому, прежде чем исключать избыточные тесты, убедитесь, что вы поняли цели этих тестов, чтобы быть уверенными в том, что эти тесты действительно избыточны.