Использует ли интеграционное тестирование макеты?

24

В настоящее время я нахожусь в классе для тестирования программного обеспечения, где для нашего семестрового проекта мы должны выполнить несколько типов тестирования, таких как модульное тестирование и интеграционное тестирование. Для интеграционного тестирования профессор сказал использовать для нашего интеграционного тестирования макеты и библиотеки-имитаторы (такие как EasyMock и Mockito). Я довольно смущен, хотя. Интеграционное тестирование - это тестирование вне классов, модулей, сервисов и т. Д. Почему макеты и заглушки подходят для интеграционного тестирования, если вы тестируете несколько классов и сервисов?

TheLegendOfCode
источник
8
"Интеграционное" и "модульное" тестирование не являются общепризнанными условиями. Лучше спросить своего профессора, как именно они определили эти термины.
RubberDuck
1
Просто комментарий. Интеграционный тест - это не тестирование зависимостей. Это тестирование правильной интеграции кода с зависимостями (вызовы, обработка ответов и ошибок и т. Д.).
Laiv

Ответы:

25

Если у вас есть часть функциональности, которая касается нескольких внешних компонентов, вы можете высмеивать все, кроме одного, чтобы изолировать и протестировать определенный компонент. Например, предположим, у вас есть функция, которая вызывает веб-сервис, а затем что-то делает с базой данных на основе результатов. Вы можете написать три интеграционных теста:

  1. тест, который проверяет вызов веб-службы, но включает в себя реальное подключение к базе данных.
  2. тест, который делает реальный вызов веб-сервиса, но использует фиктивное подключение к базе данных.
  3. тест, который делает реальный вызов веб-сервиса и включает в себя реальное соединение с базой данных.

Если вы запустите все три теста, а 1 и 3 не пройдут, есть большая вероятность, что в вашем коде может быть ошибка, работающая с базой данных, поскольку единственным пройденным тестом был тест, использующий фиктивное соединение с базой данных.

В целом, интеграционные тесты не используют макеты, но я иногда делал что-то подобное.

FrustratedWithFormsDesigner
источник
7

Не сразу понятно, что подразумевается под интеграционным тестом, но использование Fakes / Mocks / Test Doubles является допустимым методом для создания тестовых сценариев на всех уровнях в пирамиде тестов . [1] [2] [3]

jschnasse
источник