1

我们有一个 Windows 客户端,我们的 QA 团队为其编写了编码的 UI 测试。我正在尝试让 OpenCover 工作,这样我们就可以看到他们的测试真正击中了多少应用程序。他们使用 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\Microsoft\TestWindow\vstest.console.exe" -output:C:\CodeCoverage\CollectionResults\CodedUICover.xml "-targetargs:C:\CodeCoverage\Tests\EllisWinAppTest.dll /Platform:x86 /Framework:框架40 /测试:LaunchEllisTest"

4

1 回答 1

0

我强烈怀疑这是由于您启动被测应用程序的方式

OpenCover 是一个 .NET 探查器,要启动附加探查器的 .NET 应用程序,需要一些环境变量可供新进程使用。我怀疑它ApplicationUnderTest.Launch不会传播所有当前的环境变量,因此探查器不会启动,因此不会报告覆盖率。

要使其正常工作,您应该考虑使用使用 ProcessStartInfo 的ApplicationUnderTest.Launch重载,然后您需要传播以下环境变量

  • Cor_Profiler
  • Cor_Enable_Profiling
  • OpenCover_Profiler_Key
  • OpenCover_Profiler_Namespace
  • OpenCover_Profiler_Threshold
  • OpenCover_Profiler_TraceByTest(如果可用)

Cor_*运行时需要启动探查器,并且这些条目OpenCover_*是为了允许探查器和主机找到彼此 -这些环境变量的列表可在 github 上找到

于 2014-12-06T00:28:59.787 回答