我们有一个Windows客户端,我们的QA团队为其编写了编码的UI测试。我试图让OpenCover工作,这样我们就可以看到他们的测试真正击中了多少app。他们使用MSTest框架之上的自定义框架编写测试。
他们的框架使用ApplicationUnderTest.Launch以不同的用户身份启动应用程序来测试安全设置。我可以捕获测试dll的覆盖范围,但它可以自己应用。
我强迫应用程序以32位构建,确保所有pdb都存在于文件夹中,并将pdb目录包含在targetdir中。
还有其他人看过这个问题吗?我也尝试用包装器exe替换我的批处理文件并获得了覆盖,但不是主应用程序。一切都像他们启动应用程序的用户一样运行,因为谁也是机器上的管理员。
我正在运行的命令是: C:\ Users \ kkindt.CORP \ AppData \ Local \ Apps \ OpenCover \ OpenCover.Console.exe -register" -target:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \微软\ TestWindow \ vstest.console.exe" -output:C:\ CodeCoverage \ CollectionResults \ CodedUICover.xml" -targetargs:C:\ CodeCoverage \ Tests \ EllisWinAppTest.dll / Platform:x86 / Framework:framework40 / Tests:LaunchEllisTest"
答案 0 :(得分:0)
我强烈怀疑这是由于您如何启动测试中的应用程序
OpenCover是一个.NET分析器,并且要在附加分析器的情况下启动.NET应用程序,需要一些环境变量可供新进程使用。我怀疑ApplicationUnderTest.Launch
不会传播所有当前环境变量,因此探查器无法启动,因此不报告覆盖范围。
要使其工作,您应该考虑使用使用ProcessStartInfo的ApplicationUnderTest.Launch重载,然后您需要传播以下环境变量
运行时需要Cor_*
来启动分析器,OpenCover_*
条目允许分析器和主机相互查找 - github上有list of these environment variables < / p>