2011-12-19 2 views
0

У нас есть система с сообщениями. Каждое сообщение имеет время истечения, связанное с ним. Рабочий поток постоянно работает в фоновом режиме и собирает сообщения, срок действия которых истек, и их необходимо удалить. Рабочий поток отправляет идентификатор таких сообщений следующей службе.Непрерывный рабочий поток и Nunit

В тестовых случаях nunit мы создаем фиктивные сообщения и проверяем, не истечет ли его состояние в конце тестового примера. Но для этого мы должны положить thread.sleep в тестовые примеры, чтобы ждать, пока рабочий поток завершит свою задачу. Однако сон также не является надежным, поскольку отсрочка от рабочего зависит от количества записей в базе данных.

Какова должна быть стратегия тестирования такого сценария с использованием nunit и C#.

ответ

1
  1. Вместо реальной базы данных вы должны использовать макет объекта. Таким образом, количество записей (фактически поддельных записей) настраивается;
  2. Эта «следующая услуга» также должна быть представлена ​​как макет объекта. Помимо интерфейса реального сервиса, он также должен реализовать некоторые вспомогательные методы для модульных тестов. В вашем случае это может быть событие (OnExpiredMessagesReceived), которое уведомляет, что служба получила идентификаторы истекших сообщений.
  3. Используйте ManualResetEvent в своем тесте, чтобы дождаться события из службы. Затем вы должны сравнить полученные идентификаторы с ожидаемыми.
Смежные вопросы