在TFS构建期间使用Fakes在代码上分析代码覆盖率失败

时间:2016-08-03 15:24:47

标签: code-coverage tfsbuild microsoft-fakes

在我们的TFS版本中启用代码覆盖后,我遇到了一些问题。测试中的解决方案包含三个测试项目,在209个测试中,三个测试失败(一个项目中的一个,另一个项目中的两个),并出现以下错误:

Test method MyNamespace.MyTest threw exception: 
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException: Unexpected error returned by SetDetourProvider in profiler library 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\14.0.0\Microsoft.IntelliTrace.Profiler.14.0.0.dll'.
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.IntelliTraceInstrumentationProvider.Initialize()
Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InitializeUnitTestIsolationInstrumentationProvider()
Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.CreateContext()
Microsoft.QualityTools.Testing.Fakes.ShimsContext.Create()
MyNamespace.MyTest () in MyFile.cs: line 224

堆栈跟踪表明已连接到Shims的使用。即使运行代码覆盖率并在构建期间禁用代码覆盖率,所有测试也会在本地传递,从而使测试再次通过。 该问题似乎与Microsoft Fakes generates UnitTestIsolationException略有关系,但Resharper未安装在构建服务器上。

我尝试了什么

  1. 不同的构建类型:使用自定义或默认模板构建vNext,XAML构建
  2. 使用/p:EnableIntelliTrace=true和.runsetting
  3. 显式禁用IntelliTrace
  4. 为所有.fakes文件添加Diagnostic="true"
  5. 增加记录详细程度以获取更多错误信息
  6. 通过命令行在服务器上本地运行测试
  7. 我的构建服务器设置

    • Windows Server 2012 R2
    • Team Foundation Server 2015.3
    • Visual Studio Enterprise 2015.3

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我遇到了同样的错误消息,尽管在我自己的情况下是在运行测试时。从命令行执行时,vstest.console.exe可以正常工作,但是从Bamboo构建任务运行时,它失败并显示以上消息。

问题最终出在用户运行任务上-构建服务器使用SYSTEM用户。当我以普通特权用户身份运行任务时,它成功了。