如果OpenCover在目标应用程序之前消失,它可以收集覆盖率统计信息吗

时间:2014-08-06 18:27:00

标签: .net opencover

我尝试使用OpenCover来使用Topshelf获取服务的覆盖率指标。应用程序从控制台运行良好。

当应用程序运行时,它会打印以下内容:

The service is now running, press Control+C to exit.

然后按下Control + C后会打印

Control+C detected, attempting to stop service.

在没有OpenCover的情况下完成后,应用程序捕获Ctrl + C并正常停止,在完成后返回命令提示符。

我使用以下命令通过OpenCover运行应用程序:

OpenCover.Console.exe -target:service.exe -log:All -register:administrator

通过OpenCover完成后,我认为OpenCover会立即捕获Ctrl + C,然后将其传递给我的服务应用程序。结果是OpenCover立即死亡,但覆盖的目标应用程序仍在运行,需要几秒钟才能停止。我可以看到服务进程仍然在Process Explorer中,它会在stdout死亡时将其清理消息打印出来。

如果OpenCover停止后OpenCover尝试获取指标的应用程序关闭,OpenCover是否仍能获得覆盖率信息?

1 个答案:

答案 0 :(得分:0)

OpenCover始终从目标进程收集信息,但是在目标进程停止之前它不会导出信息,如果信息异常停止,它也不会将信息导出到文件。

-register选项无效,请参阅usage guide

如果在控制台模式下停止服务,为什么不尝试一种不太干扰的方式 - 我通常只是等待输入键。

如果CTRL + C是顶级货架强加的并且无法更改的内容,请将您的应用程序包装在您自己的服务中。它并不难(有些巫师可以帮助你)并且会给你更多的控制权。

有很多文章介绍如何让它在控制台和服务模式下运行。

OpenCover有时可以再次使用服务我将您推荐给wiki和-service开关,但这对于开始工作来说可能很棘手。