Непрерывно работающий рабочий поток и Nunit - PullRequest
0 голосов
/ 19 декабря 2011

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

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

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

1 Ответ

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