测试Windows服务的增量开发

时间:2013-07-02 09:57:40

标签: wcf testing service

目前正在处理作为Windows服务运行的WCF服务。

我已经制作了一个安装程序,并编写了一个小脚本,为其添加了一个用户帐户,然后在帐户下注册并启动服务。 Visual Studio中的构建步骤将其复制到一个独立的文件夹,因此我们不会直接从解决方案中运行。一切正常。

然而,随着我扩展和改进这项服务,测试它变得有点痛苦。每次我想检查我的更改时,我都必须停止服务,重建,重新启动服务并重新连接visual studio到流程之前。

只是想知道如果没有为所有服务编写代理主机,有更快或更好的方法吗?在这种情况下,单元测试不会削减它,因为服务需要像连接到Active Directory端点那样进行系统化。

1 个答案:

答案 0 :(得分:0)

我知道这个问题很古老,但我最近使用构建事件解决了部分问题:

预建活动:

if "$(ConfigurationName)" neq "Debug" goto NoStop

echo Attempting to stop windows service MyService
net stop MyService > MyService.log
if "%errorlevel%" neq "0" (call )
type MyService.log

:NoStop

构建后活动:

if "$(ConfigurationName)" neq "Debug" goto NoStart

findstr "/c:stopped successfully" MyService.log >nul
if "%errorlevel%" equ "0" net start MyService
(call )

:NoStart

这种方法的特点:

  • 检查配置,如果我没有在Debug中构建,则跳过整个位。
  • NET STOP命令将尝试停止您的服务,其下面的if命令将吞下可能发生的任何错误。如果您的服务未安装或未运行,则非常有用。
  • 由于服务已停止,服务EXE已解锁,并且构建不会因那些恼人的“文件被锁定”错误而失败。
  • 如果预构建事件成功关闭,则构建后事件将启动服务。 FINDSTR命令在预构建事件期间搜索创建的日志文件,以查找字符串“已成功停止”。如果找到,则调用NET START。无论哪种方式,下一行的(调用)都会吞下错误。

这对我在Windows 7上运行的Visual Studio 2015很有用。希望这有助于某人!