Однако, поскольку фиктивные объекты просто имитируют поведение реальных объектов, не является ли тестирование в контейнере единственным способом действительно протестировать систему в ее «реальной среде»?
Я думаю, что короткий ответ - да, но ... Я думаю, что ваш вопрос "категоризации интеграционного теста" очень актуален.Модульные и интеграционные тесты оба важны, хотя выполняют разные функции.
Модульные тесты тесно связаны с кодом, если запуск и запуск выполняются очень быстро, разработчики должны часто выполнять итерациикод, и обычно используют макеты в высокой степени.Идея состоит в том, чтобы проверить рассматриваемый код, а не его зависимости или точки интеграции.Проблема с созданием модульных тестов в контейнере состоит в том, что они будут выполняться реже или они будут тратить слишком много времени на разработку.
Мы изолировали наши внутриконтейнерные / интеграционные тесты в другом месте в другом проекте сзависимости от кода проектов.Они разработаны, чтобы максимально имитировать производственные конфигурации - насколько это возможно.Эти тесты занимают больше времени для настройки, запускаются дольше и более полезны для выполнения чего-то вроде cruisecontrol .Они запускаются вручную, особенно когда мы приближаемся к выпуску или после стабилизации разработки.Часто я запускаю интеграционные тесты, когда иду на обед или на встречу.Когда интеграционный тест обнаруживает ошибку, мы пытаемся написать модульный тест, который также демонстрирует ошибку с макетами - это часто бывает сложно и может быть невозможно.
У нас обычно есть пара небольших тестов в контейнере.с помощью модульных тестов просто для того, чтобы убедиться, что пружинная разводка работает, или для проверки некоторых основных функций, но остальная часть интеграционного тестирования выполняется в другом проекте.
Все это говорит о том, что междудва.Иногда мы переносим модульные тесты, которые работают только с большим количеством данных и затрачивают много времени на интеграционные тесты, а иногда интеграционные тесты выполняются достаточно быстро и являются достаточно ценными для включения вместе с кодом.