У вас есть наше сочувствие. Похоже, у вас синдром хрупкого теста . В идеале, одно изменение в модульном тесте должно нарушать только один тест - и это должно быть реальной проблемой. Как я уже сказал «в идеале». Но этот тип поведения распространен и поддается лечению.
Я бы порекомендовал провести некоторое время с командой, проводящей анализ первопричин того, почему все эти тесты ломаются. Да, есть несколько необычных инструментов, которые отслеживают, какие тесты чаще всего проваливаются, а какие - нет. Это встроено в некоторые серверы непрерывной интеграции. Это здорово. Но я подозреваю, что если вы просто спросите друг друга, вы узнаете. Хотя я это делал, и команда всегда просто знает из их опыта.
Во всяком случае, несколько других вещей, которые я видел, вызывают это:
- Юнит-тесты обычно не должны зависеть от класса и метода, который они тестируют. Ищите зависимости, которые закрались. Убедитесь, что вы используете внедрение зависимостей, чтобы упростить тестирование.
- Это действительно уникальные тесты? Или они проверяют одно и то же снова и снова? Если они всегда собираются потерпеть неудачу вместе, почему бы просто не удалить все, кроме одного?
- Многие люди предпочитают интеграцию, а не модульные тесты, так как они получают больше страховки за свои деньги. Но при этом одно изменение может сломать множество тестов. Может быть, вы пишете интеграционные тесты?
- Возможно, они все выполняют какой-то общий код настройки для множества тестов, что приводит к их разрыву в унисон. Может быть, это можно смоделировать, чтобы изолировать поведение.