Имитация для интеграционных тестов

Как смоделировать множество зависимостей, необходимых для интеграционных тестов?

Я использую Mockito для своих «чистых» модульных тестов. «Чистый» в данном случае означает тестирование одного класса, имитируя все его зависимости. Красивый.

Теперь интеграционные тесты. Допустим, в этом случае интеграционный тест проверит что-то вроде этого:

  1. Сообщение помещается в очередь
  2. Сообщение «обрабатывается»
  3. Ответное сообщение помещается в очередь ответов

Допустим также, что обработка то, что происходит на шаге 2, это серьезно. Он зависит от множества взаимодействий с базой данных, от множества внешних служб, файловой системы и всего прочего. Есть также много побочных эффектов, которые вызовет поток, поэтому я не могу просто убедиться, что ответ правильный -Мне нужно проверить побочные эффекты.

Каждая из этих зависимостей обернута одним классом службы без сохранения состояния, что делает их красивыми и привлекательными.

Как люди справляются с этим?

Я хотел бы использовать Mockito, чтобы проверить побочные эффекты, которые будет иметь приведенный выше поток. Тем не менее, документация Mocktio (и в значительной степени его реализация), по-видимому, решительно борются против использования его в контекстах, отличных от «чистых» модульных тестов. Я пытался пойти по этому пути, но

  • Трудно заполнить данные заглушки (, так как их много)
  • Spring трудно внедрить эти заглушки в мои bean-компоненты
  • Трудно ' сбросить макеты, чтобы я мог проверить другой набор взаимодействий, не удаляя заглушки.

РЕДАКТИРОВАТЬ

Я знаю, что могу справиться с проблемой базы данных с помощью чего-то вроде экземпляра HSQLDB, но проблема с внешними службами все еще остается. Для воспроизводимости я не могу полагаться на эти сервисы,быть в том состоянии, которое мне нужно, и т. д. Единственный вариант, который я вижу, - это издеваться над ними.

Что делать?

37
задан Roy Truelove 13 April 2012 в 01:09
поделиться