在使用Fakes对代码进行代码覆盖率分析时,在TFS构建过程中失败。
在使用Fakes对代码进行代码覆盖率分析时,在TFS构建过程中失败。
我在启用TFS构建期间遇到了一些问题。测试解决方案包含三个测试项目,共209个测试中有三个测试失败(一个在一个项目中,另外两个在另一个项目中),错误信息如下:
测试方法MyNamespace.MyTest抛出异常: Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationException:在分析器库“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\14.0.0\Microsoft.IntelliTrace.Profiler.14.0.0.dll”中SetDetourProvider返回意外错误。 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的使用有关。即使在运行Code Coverage并禁用构建期间的Code Coverage时,所有测试也能通过本地运行。
这个问题似乎与Microsoft Fakes generates UnitTestIsolationException略有关联,但构建服务器上未安装Resharper。
我尝试过的方法:
- 不同的构建类型:Build vNext,具有自定义或默认模板的XAML Build
- 使用
/p:EnableIntelliTrace=true
和.runsetting显式禁用IntelliTrace - 在所有.fakes文件中添加
Diagnostic="true"
- 增加日志详细程度以获取更多错误信息
- 通过命令行在服务器上本地运行测试
我的构建服务器配置:
- Windows Server 2012 R2
- Team Foundation Server 2015.3
- Visual Studio Enterprise 2015.3