Одно ключевое требование для хорошего модульного теста состоит в том, что он изолирован . На практике это означает, что ни один модульный тест не использует состояние из других тестов или не может зависеть от состояния в других тестах.
Модульный тест должен установить требуемое состояние перед выполнением и разорвать его впоследствии. Это может быть сделано, например, с помощью испытательных приспособлений. С этим связан Arrange-Act-Assert (AAA), который представляет собой шаблон для написания модульных тестов.
В вашем случае статические данные плохие , что затрудняет тестирование !
Как насчет рефакторинга вашего кода , чтобы статические данные были доступны через некоторый интерфейс или через фабрику?
Не зная вашей проблемной области, невозможно дать точный ответ, что было бы лучшим. Однако подход, который вы должны использовать, заключается в извлечении общих статических данных, чтобы каждый тест мог настроить свой собственный набор данных. Теперь каждый тест может быть изолированным и будет иметь дело только с «собственными» данными.
Это дает дополнительные преимущества, такие как 1) модульные тесты просто будут иметь набор данных, достаточный для проверки одной вещи, 2) меньше зависимостей в вашей системе и 3) возможно, более быстрые / меньшие тесты.
Наконец, я согласен с Хади в том, что вы должны хранить модульное тестирование и интеграцию / функциональный тест отдельно. Это очень важно, потому что они проверяют вещи по-разному.
Удачи!