Полезно ли использовать Autofac и moq для разработки теста интеграции? Большинство примеров и документации, которые я нашел в Интернете, сосредоточены на использовании двух тестов Unit. Любой хороший пример для теста интеграции? И интеграционным тестом я имею в виду некоторый подход, подобный кнопке вверх, сверху вниз или сэндвич-подходам.Интеграционный тест с использованием Autofac и Moq
ответ
Я рекомендую вам определить, что вы подразумеваете под интеграционным тестом, поскольку этот термин не имеет ни одного принятого определения. Я предполагаю, что вы имеете в виду тестирование целого приложения изолированно, т. Е. Тестирование нескольких (возможно, сотен) классов вместе, но без взаимодействия с внешними системами (например, базы данных, службы http).
Это отличная идея ввести какую-либо инъекцию зависимостей или инверсию управления в ваш проект. Независимо от того, используете ли вы Autofac или какое-либо другое решение, преимущества в тестах интеграции одинаковы - инъекция зависимости позволяет вам заменить биты вашей системы, которые общаются с внешним миром, например. ваш DAO, с макетной или заглушкой версии, которая работает в памяти. Например, в производстве вы, возможно, использовали DAO, поддерживаемый внешней базой данных MSSQL, но в тестах интеграции вы использовали бы заглушку DAO, поддерживаемую в словаре Dictionary или HashMap.
Что касается Moq, я бы не рекомендовал использовать Moq для интеграционных тестов. Mocking отлично подходит для тестов Unit, потому что Unit Tests тестирует очень маленькие области с системой, и взаимодействие с макетным объектом часто бывает простым (если нет, то, возможно, вам следует реорганизовать ваш Unit Test!). Однако с интеграционными тестами вы тестируете всю свою систему, и вполне возможно, что будет много и много взаимодействий с объектом, который вы пытаетесь высмеять. Кроме того, по мере изменения системы взаимодействие с макетом может измениться, даже если результаты остаются неизменными. Из-за этого становится очень сложно и утомительно настраивать и поддерживать макет для теста интеграции, потому что часто вам приходится настраивать многие вызовы методов.
Кроме того, интеграционные тесты могут быть многопоточными, и вещи могут не всегда выполняться в одном порядке. Опять же, сложно насмехаться!
Лучшим подходом к интеграционным испытаниям является фактическое внедрение в память версии вашего объекта. Он должен вести себя как можно ближе к реальной вещи. Вероятно, вам придется добавить к этому дополнительные методы в реализации памяти, чтобы делать такие вещи, как настройка начального состояния (в примере DAO, настройка некоторых тестовых данных) или проверка вывода. В долгосрочной перспективе вы найдете это гораздо более гибким, так как растет база интеграции.
Чтобы быть ясным, я думаю, что Moq очень полезен для тестов единиц, а не для тестов интеграции.
- 1. Тестирование модуля с использованием Moq и Autofac
- 2. Интеграционный тест с Ninject
- 3. Интеграционный тест с отказоустойчивым
- 4. Интеграционный тест с ScalaTest и Future
- 5. Интеграционный тест без огурца?
- 6. Интеграционный тест JMS с Arquillian
- 7. Интеграционный тест + aspectJ + gradle
- 8. jasmine 2 интеграционный тест
- 9. Контрольные контроллеры = интеграционный тест?
- 10. Что представляет собой интеграционный тест
- 11. Решение нескольких объектов Moq на основе условия с использованием Autofac
- 12. Интеграционный тест с DBUnit SpringFramework java
- 13. Интеграционный тест CakePHP3 и данные json
- 14. Как написать этот интеграционный тест
- 15. Надежный интеграционный тест для кода с использованием HyperLogLog?
- 16. Интеграционный тест Node.js + база данных
- 17. Интеграционный тест для FeignClient с использованием теста Double
- 18. Тест неудачу с помощью Moq и таймер
- 19. Интеграционный тест вместо модульного теста
- 20. Ninject/MVC4 - интеграционный тест контроллера
- 21. Интеграционный тест DBUnit NoSuchTableException Java
- 22. Интеграционный тест: протестировать аннотацию с автоподдержкой
- 23. Как запустить интеграционный тест весной с @SpringBootTest
- 24. Как написать интеграционный тест с базой данных
- 25. Интеграционный тест заставляет Entity Framework истекать время
- 26. Как настроить интеграционный тест с Spring и Spock?
- 27. Интеграционный тест с памятью db и весной jdbc
- 28. Интеграционный тест с данными Spring SOLR и управление транзакциями
- 29. Единичный тест для атрибута вида с использованием Moq
- 30. Интеграционный тест на сервере непрерывной интеграции
Зачем вам нужен мок для тестирования интеграции? Зачем вам нужен Autofac для модульного теста? –
Пожалуйста, сначала прочитайте мой вопрос, я ничего не писал о необходимости использования Autofac или Moq, я прошу совета, если он рассчитывает использовать их для целей интеграционного тестирования. – Mindan