Тестирование службы Windows в .Net - PullRequest
5 голосов
/ 21 февраля 2011

Я занимаюсь разработкой службы Windows на C # .Net, и у меня возникли сложности с выполнением и проверкой моей службы. Я использую компонент таймера, чтобы запускать его время от времени и выполнять свои методы. Мне нужно постоянно инициализировать сервис, чтобы запустить его. Кто-нибудь знает более практичный способ тестирования услуги?

Ответы [ 5 ]

12 голосов
/ 21 февраля 2011

Это часто сводится к вопросу что вы хотите проверить .Вы хотите протестировать сервис или функциональность, которую он выполняет?Лично я хотел бы ...

  • Сложить все функциональные возможности службы в отдельную библиотеку классов
  • Проверить библиотеку
  • Вызвать функциональность библиотеки из службы

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

9 голосов
/ 21 февраля 2011

Службы Windows - это обычные EXE-файлы, которые при запуске подключаются к диспетчеру управления службами.

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

3 голосов
/ 21 февраля 2011

Возможно, вы захотите добавить модульные тесты к вашей службе.

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

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

2 голосов
/ 17 мая 2012

После создания службы окон вы можете установить ее в службу окон.

Установка службы с помощью InstallUtil.exe Для установки или удаления службы Windows (которая была создана с помощью .NET Framework) используйте утилиту InstallUtil.exe. Этот инструмент можно найти по следующему пути (используйте соответствующий номер версии фреймворка).

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Installutil.exe

Чтобы установить службу .NET, выполните команду, аналогичную этой (укажите полный путь к службе).

InstallUtil.exe "путь службы"

Для удаления службы .NET используйте ту же команду с параметром /u.

.

InstallUtil.exe / u "путь службы"

2 голосов
/ 21 февраля 2011

Один из способов, с помощью которых я запускаю службы при разработке, заключается в следующем: Запуск службы Windows в качестве консоли .Я нашел это полезным, потому что вы можете добавить код для записи на консоль для отладочной информации и записи любых соответствующих данных об исключениях.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...