Как вы проводите интеграционные тесты с NServiceBus? - PullRequest
1 голос
/ 30 июля 2010

У меня есть веб-приложение, которое имеет 2 набора служб.Один набор - это бизнес-сервисы, такие как UserService, а другой - сервисные сервисы, такие как EmailService.Как бизнес-сервисы подключаются к сервисным сервисам через NServiceBus.Как вы проводите интеграционные тесты в этом сценарии?Что я сделал сейчас, так это то, что я разогнал тест интеграции на 2 модульных теста.Сначала выполняется тестирование бизнес-службы, а затем выполняется проверка / проверка отправки NServiceBus.Второй модульный тест проводится в сервисной службе, а затем проверяет / проверяет отправку электронной почты.Как вы можете сказать, это совсем не оптимально.На данный момент у нас есть 2 экземпляра NServiceBus - один в качестве клиента и один в качестве сервера (сервер имеет добавленные обработчики).Это работает в обычном, не тестовом режиме (поскольку клиент находится в контексте IIS, а сервер - автономное приложение), но когда я пытаюсь сделать это в тесте, кажется, что я не могу запустить два экземпляра?Любой совет?

1 Ответ

2 голосов
/ 19 января 2011

Похоже, что вы правильно выполняете модульное тестирование, высмеивая внешнюю зависимость от NServiceBus. Чтобы быть ясным, мое определение модульных тестов состоит в том, что они ничего не делают за пределами вашего кода (как, скажем, использование MSMQ). Для ваших интеграционных тестов вы должны уметь делать что-то очень простое, что доказывает, что вы можете передавать сообщения из одной системы в другую и, возможно, получить ожидаемый конечный результат. Чтобы настроить это, вы можете запустить клиент-сервер NServiceBus из метода установки вашего тестового устройства (и избавиться от них в демонтаже). Не имеет значения, являются ли они EXE-файлами или запускаются в IIS - вы должны иметь возможность программно запускать / останавливать их изнутри вашего теста, даже если это означает вызов Process.Start () или чего-то подобного.

В качестве альтернативы, если ваши интеграционные тесты выполняются на сервере сборки в рамках настройки непрерывной интеграции, ваш скрипт сборки может гарантировать, что правильные процессы выполняются даже до запуска ваших тестов, что, вероятно, приведет к более воспроизводимым и более быстрым результатам. , Используя комбинацию TeamCity и MSBuild или NAnt, довольно легко сделать что-то подобное.

...