Позвольте мне начать с определения:
Unit Test - это метод проверки и проверки программного обеспечения, в котором программист проверяет, подходят ли отдельные единицы исходного кода для использования
Тестирование интеграции - это активность тестирования программного обеспечения, в которой отдельные программные модули объединяются и тестируются как группа.
Хотя они часто используются в разных целях, эти термины смешиваются. Разработчики ссылаются на автоматизированные интеграционные тесты как единичные тесты. Также некоторые утверждают, какой из них лучше, что кажется мне неправильным вопросом вообще.
Я хотел бы попросить сообщество разработчиков поделиться своим мнением о том, почему автоматические интеграционные тесты не могут заменить классические модульные тесты.
Вот мои собственные наблюдения:
- Интеграционные тесты не могут использоваться с подходом TDD
- Интеграционные тесты выполняются медленно и не могут выполняться очень часто.
- В большинстве случаев интеграционные тесты не указывают на источник проблемы
- сложнее создать тестовую среду с интеграционными тестами
- сложнее обеспечить высокий охват (например, имитация особых случаев, неожиданные сбои и т.д.).
- Интеграционные тесты не могут использоваться с Тестирование на основе взаимодействия
- Интеграционные тесты еще больше продвигают момент обнаружения дефекта (от paxdiablo)
EDIT: просто для уточнения еще раз: вопрос заключается не в том, следует ли использовать интеграцию или модульное тестирование, а не о том, какой из них более полезен. В основном я хочу собрать аргументы для разработчиков, которые пишут ТОЛЬКО интеграционные тесты и рассматривают их как единичные тесты. Любой тест, который включает компоненты из разных слоев, считается интеграционным тестом. Это должно сравниться с unit test, где главная цель - изоляция.
Спасибо, Андрей