2014-12-03 66 views
1

我们有我们的QA团队写道编码的UI测试的Windows客户端。我试图让OpenCover工作,以便我们可以看到他们的测试真的有多大的应用程序。他们在MSTest框架之上使用自定义框架编写测试。使用OpenCover运行编码的UI测试未收集应用程序代码

他们的框架使用ApplicationUnderTest.Launch启动该应用程序为不同用户测试安全设置。我可以捕获测试dll的覆盖范围,但它可以自行应用。

我强迫应用程序建立在32位,确信所有PDBS中存在的文件夹,并包含在TARGETDIR的PDB目录中。

有其他人看过这个问题吗?我也尝试用包装exe替换我的批处理文件,并获得了覆盖,但不是主应用程序。一切都以用户身份运行,因为他们也是机器上的管理员。

我运行的命令是: C:\ Users \ kkindt.CORP \ AppData \ Local \ Apps \ OpenCover \ OpenCover.Console.exe -register“-target:C:\ Program Files(x86)\微软的Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \微软\ TestWindow \ vstest.console.exe “ - 输出:C:\代码覆盖率\ CollectionResults \ CodedUICover.xml” -targetargs:C:\代码覆盖率\测试\ EllisWinAppTest.dll /平台:86 /框架:framework40 /测试:LaunchEllisTest”

回答

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_*项是允许探查器和主机找到对方 - 一个list of these environment variables都可以在GitHub

+0

你是先生,是男人。添加了一个循环来将变量传播到启动过程,并且收集得很好。感谢您的帮助! – Kevin 2014-12-08 21:51:29

+0

不错 - 我想知道是否可以添加到OpenCover自动注入这些信息如果不是已经存在 - 可能是一个不错的功能 – 2014-12-09 00:30:05

+0

@Kevin - 我期待它添加到OpenCover但有麻烦重复你的问题,你会[可能enagage](https://github.com/OpenCover/opencover/issues/244)与我们合作,使这一无缝融合? – 2015-02-13 23:10:47

相关问题