Как может я модульный тест служба Windows?

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

59
задан GEOCHET 10 February 2009 в 20:41
поделиться

5 ответов

Я, вероятно, рекомендовал бы разработать Ваше приложение, таким образом, переопределения "OnStart" и "OnStop" в службе Windows просто называют методы на блоке библиотеки классов. Тем путем можно автоматизировать модульные тесты против методов библиотеки классов, и дизайн также абстрагирует бизнес-логику от реализации службы Windows.

В этом сценарии, тестируя "OnStart" и сами методы "OnStop" в контексте службы Windows тогда был бы интеграционный тест, не что-то, что Вы автоматизируете.

87
ответ дан Guy Starbuck 7 November 2019 в 14:40
поделиться

У меня есть протестированные сервисы окон единицы, не тестируя сервис непосредственно, а скорее тестируя то, что делает сервис.

Обычно я создаю один блок для сервиса и другого для того, что делает сервис. Тогда я пишу модульные тесты против второго блока.

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

31
ответ дан Kevin Berridge 7 November 2019 в 14:40
поделиться

Я запустил бы здесь . Это показывает, как запустить и остановить сервисы в C#

, образец А для запуска,

public static void StartService(string serviceName, int timeoutMilliseconds)
{
  ServiceController service = new ServiceController(serviceName);
  try
  {
    TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

    service.Start();
    service.WaitForStatus(ServiceControllerStatus.Running, timeout);
  }
  catch
  {
    // ...
  }
}

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

11
ответ дан Onorio Catenacci 7 November 2019 в 14:40
поделиться

Я использовал бы класс обслуживания окон (тот, который Вы выполняете, когда Вы запускаете/останавливаете сервис), вид подобных прокси к Вашей реальной системе. Я не вижу, как код позади Вашего сервиса должен несколько отличаться от любого другого программирования. onStart и onStop методы являются просто запускаемыми событиями, как нажатие кнопки на GUI.

, Таким образом, Ваш класс обслуживания окон является очень тонким классом, сопоставимым с формой окон. Это называет Вашу бизнес-логику / доменной логикой, которая тогда делает то, что это, как предполагается, делает. Все, что необходимо сделать, удостоверяются метод (методы), который Вы называете в своем onStart, и onStop работают как, они, как предполагается. По крайней мере, это - то, что я сделал бы;-)

5
ответ дан Erik van Brakel 7 November 2019 в 14:40
поделиться

Служба тестового окна при автоматическом отключении питания, условия выключения Служба тестового окна при отключении и подключении сети Служба тестового окна опция автозапуск, ручной и т. д.

0
ответ дан 24 November 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: