从 Visual Studio Team Services 的代码覆盖范围中排除程序集
Excluding assemblies from code coverage in Visual Studio Team Services
我在 Visual Studio Team Services(以前的 Visual Studio Online)上有一个构建 运行。我想从代码覆盖率计算中排除一些程序集。基于我阅读过的格式 from many sources。我创建了一个 .runsettings 文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage"
uri="datacollector://Microsoft/CodeCoverage/2.0"
assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>*AWSSDK*</ModulePath>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
但这会产生以下错误:
正在开始执行测试,请稍候...
错误:System.InvalidOperationException:无法在进程流上混合同步和异步操作。
在 System.Diagnostics.Process.get_StandardError()
在 Microsoft.VisualStudio.Coverage.Vanguard.Wait()
在 Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串输出名称,DataCollectionContext 上下文)
在 Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollectorImpl.StartVanguard(DataCollectionContext 上下文)
在 Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart(对象发送者,SessionStartEventArgs e)
在 Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart(对象发送者,SessionStartEventArgs e)
在 System.EventHandler`1.Invoke(对象发送者,TEventArgs e)
在 WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart(SessionStartEventArgs e)
在 WEX.TestExecution.DataCollectorTestMode.Initialize(ITestModeSettings 设置,ICallbackRegistrar callbackRegistrar)
信息:此外,如果测试发现器和执行器作为 vsix 扩展安装在机器上并且您的安装支持 vsix 扩展,则您可以尝试指定“/UseVsixExtensions”命令。示例:vstest.console.exe myTests.dll /UseVsixExtensions:true
VSTest 测试 运行 失败,退出代码:1
是的,一些测试正在使用 async/await。同一个 .runsettings 文件在 Visual Studio 2015 中工作正常。如果我按照它的建议进行并添加以下选项:/UseVsixExtensions:true
,结果是一样的。我该如何解决这个问题?
runsettings 文件使用以下正则表达式来匹配文件:
Regular expressions Include and exclude nodes use regular expressions.
For more information, see Using Regular Expressions in Visual Studio.
Regular expressions are not the same as wildcards. In particular:
.* matches a string of any characters
. matches a dot ".")
( ) matches parentheses "( )"
\ matches a file path delimiter "\"
^ matches the start of the string
$ matches the end of the string
使用您的原始路径,所有文件都将被排除,因为您的路径中只有“*”。详情参考这个link:Regular Expressions in Visual Studio.
对于严重异常,根据您提供的日志,您是运行使用Hosted Build Agent 构建的。我使用 Hosted Build Agent 进行了快速测试,也可以重现此问题。但是,当我尝试使用自己的构建代理时,不会出现此问题。我怀疑 Hosted Build Agent 上有一些 setting/configuration 导致了这个问题,我已帮助您在 Microsoft Connect 页面上提交反馈。您可以检查此 link 以进行跟踪:Invalid exception when run testing from Hosted Build Agent
我在 Visual Studio Team Services(以前的 Visual Studio Online)上有一个构建 运行。我想从代码覆盖率计算中排除一些程序集。基于我阅读过的格式 from many sources。我创建了一个 .runsettings 文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage"
uri="datacollector://Microsoft/CodeCoverage/2.0"
assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>*AWSSDK*</ModulePath>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
但这会产生以下错误:
正在开始执行测试,请稍候... 错误:System.InvalidOperationException:无法在进程流上混合同步和异步操作。 在 System.Diagnostics.Process.get_StandardError() 在 Microsoft.VisualStudio.Coverage.Vanguard.Wait() 在 Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串输出名称,DataCollectionContext 上下文) 在 Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollectorImpl.StartVanguard(DataCollectionContext 上下文) 在 Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart(对象发送者,SessionStartEventArgs e) 在 Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart(对象发送者,SessionStartEventArgs e) 在 System.EventHandler`1.Invoke(对象发送者,TEventArgs e) 在 WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart(SessionStartEventArgs e) 在 WEX.TestExecution.DataCollectorTestMode.Initialize(ITestModeSettings 设置,ICallbackRegistrar callbackRegistrar) 信息:此外,如果测试发现器和执行器作为 vsix 扩展安装在机器上并且您的安装支持 vsix 扩展,则您可以尝试指定“/UseVsixExtensions”命令。示例:vstest.console.exe myTests.dll /UseVsixExtensions:true VSTest 测试 运行 失败,退出代码:1
是的,一些测试正在使用 async/await。同一个 .runsettings 文件在 Visual Studio 2015 中工作正常。如果我按照它的建议进行并添加以下选项:/UseVsixExtensions:true
,结果是一样的。我该如何解决这个问题?
runsettings 文件使用以下正则表达式来匹配文件:
Regular expressions Include and exclude nodes use regular expressions. For more information, see Using Regular Expressions in Visual Studio. Regular expressions are not the same as wildcards. In particular:
.* matches a string of any characters
. matches a dot ".")
( ) matches parentheses "( )"
\ matches a file path delimiter "\"
^ matches the start of the string
$ matches the end of the string
使用您的原始路径,所有文件都将被排除,因为您的路径中只有“*”。详情参考这个link:Regular Expressions in Visual Studio.
对于严重异常,根据您提供的日志,您是运行使用Hosted Build Agent 构建的。我使用 Hosted Build Agent 进行了快速测试,也可以重现此问题。但是,当我尝试使用自己的构建代理时,不会出现此问题。我怀疑 Hosted Build Agent 上有一些 setting/configuration 导致了这个问题,我已帮助您在 Microsoft Connect 页面上提交反馈。您可以检查此 link 以进行跟踪:Invalid exception when run testing from Hosted Build Agent