如果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立即死亡,但覆盖的目标应用程序仍在运行,并且需要几秒钟才能停止。我可以看到服务进程仍在进程资源管理器中运行,并且在服务进程结束时将其清理消息打印到stdout。

如果OpenCover试图获取指标的应用程序在OpenCover停止后关闭,OpenCover还能获得覆盖率信息吗?

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

您的-register选项无效,请参阅使用指南。

如果在控制台模式下停止服务,为什么不尝试一种不那么侵入性的方法-我通常只是等待回车键。

如果CTRL+C是顶级架子强加的东西,不能改变,那么把你的应用程序包装在你自己的服务中。这并不难(有向导来帮助你),并且会给你更多的控制。

有很多文章展示了如何使它在控制台和服务模式下运行。

OpenCover有时可以与服务一起工作,我再次建议您参考wiki和-service开关,但这可能很难工作

相关内容

  • 没有找到相关文章

最新更新