在.Net中测试Windows服务

mca*_*ara 5 .net c# windows windows-services

我正在用C#.Net开发一个Windows服务,我有一些难以执行和测试我的服务.我正在使用计时器组件不时运行它并执行我的方法.我必须始终将服务初始化以运行它.有人知道更实用的方法来测试服务吗?

Fre*_*örk 13

这通常归结为您要测试的问题.您想测试服务或它执行的功能吗?就我个人而言......

  • 将所有服务功能重构为单独的类库
  • 测试库
  • 从服务调用库功能

...然后将服务本身的代码量保持在触发类库中的功能所需的最低限度.


Tim*_*son 9

Windows服务是碰巧在启动时连接到服务控制管理器的普通EXE.

我通常通过给它们一个可选的命令行参数来测试服务,该参数告诉它们在Main方法内部正常执行,而不是充当服务.这样我就可以直接在Visual Studio或命令行等中调试它们.

  • 虽然你的评论指出了我们的方向,但如果你发布了一个如何实现这一目标的例子,它将非常有用.这是我第一次开发服务,所以我不会把你的评论放在一起,我认为对谷歌搜索这个问题也是如此.:) (8认同)

Ted*_*sen 4

您可能想向您的服务添加单元测试。

听起来您可以通过将应用程序添加到任务计划程序而不是将其作为服务运行来获得更多好处。

除此之外,如果您确实需要它作为服务,您需要设计它以便可以对其进行测试。我通常在一个单独的类中编写服务,并向其中添加一个 .EXE 项目,这样我也可以从命令行运行它。