我在C#.Net开发一个Windows服务,我有一些难以执行和testing我的服务。 我使用一个计时器组件来不时运行它并执行我的方法。 我必须始终将服务初始化以运行它。 任何人都知道一个更实用的方法来testing服务?
您可能想要将单元测试添加到您的服务。
听起来你可以从将应用程序添加到Task Scheduler中而不是将其作为服务运行来获得更多的好处。
除此之外,如果你真的需要它作为服务,你需要设计它,所以它可以被测试。 我通常写我的服务在一个单独的类,并添加一个.EXE项目,所以我可以从命令行运行它。
这往往归结为你想要测试的问题。 你想测试服务,还是它执行的功能? 我个人会…
…然后将服务本身中的代码量保持在触发类库中的功能所需的最低限度。
Windows服务是在启动时偶然连接到服务控制管理器的普通EXE。
我通常通过给他们一个可选的命令行参数来测试服务,告诉他们在Main
方法内正常执行,而不是作为一个服务。 这样我可以直接在Visual Studio中或在命令行上调试它们。
我在开发时运行服务的方式之一是沿着这些方向 – 运行一个Windows服务作为控制台 。 我发现它很有用,因为您可以添加代码来写出调试信息的控制台并写出任何相关的异常数据。
我不会使用这种方法,而不是单元测试,但我发现这是一个有用的方式来工作和调试需要的地方。
创建窗口服务后,可以将其设置为窗口服务。
使用InstallUtil.exe安装服务要安装或卸载Windows服务(使用.NET Framework创建),请使用实用程序InstallUtil.exe。 该工具可以在以下路径中找到(使用适当的框架版本号)。
C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ InstallUtil.exe
要安装与此类似的.NET服务运行命令(指定服务的完整路径)。
InstallUtil.exe“服务路径”
要卸载.NET服务,请使用与参数/ u相同的命令。
InstallUtil.exe / u“服务路径”