相关疑难解决方法(0)

如何在Visual Studio Test Runner中排除某些测试?

我在某些测试中有属性,理想情况下我不想在每个构建上运行.我的大多数测试都是正常的单元测试,我确实希望它们在每个构建上运行.

那么:我如何按类别或项目类型排除测试?

例如,我想排除CodedUItests:

[CodedUITest]
public class SearchViewTests
Run Code Online (Sandbox Code Playgroud)

...或排除给定的测试TestCategory:

[TestMethod]
[TestCategory("Database Integration")]
public void ContactRepositoryGetByIdWithIdExpectCorrectContact()
Run Code Online (Sandbox Code Playgroud)

我特别希望排除编码的UI测试,因为它们会破坏我继续工作的能力,而所有其他测试都会在后台愉快地运行而不会打扰我.

最初这个问题是关于Visual Studio 2012的,所以我更喜欢那个版本以及更高版本的解决方案.

tdd unit-testing visual-studio coded-ui-tests visual-studio-2012

31
推荐指数
3
解决办法
2万
查看次数

使用.runsettings从代码覆盖率中排除程序集

在为包含多个项目的解决方案运行代码覆盖时,我注意到Code Coverage还包括我的测试程序集.

我发现了一篇文章,建议使用.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>
              <Include>
                <!-- Do not specify any includes. This will attempt to include all binaries -->
              </Include>
              <Exclude>
                <!-- Exclude modules that aren't to be processed, by their name / path -->
                <ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->
              </Exclude>
            </ModulePaths>

            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>
            <!--
Additional paths to search for symbol files. Symbols must be found for modules to …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing code-coverage visual-studio vs-unit-testing-framework

18
推荐指数
3
解决办法
2万
查看次数

从 Visual Studio Team Services 中的代码覆盖范围中排除程序集

我有一个在 Visual Studio Team Services(以前称为 Visual Studio Online)上运行的构建。我想从代码覆盖率计算中排除一些程序集。基于我 许多 来源阅读的格式。我创建了一个 .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>
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

正在开始测试执行,请稍候...错误:System.InvalidOperationException:无法在流程流上混合同步和异步操作。在System.Diagnostics.Process.get_StandardError()在Microsoft.VisualStudio.Coverage.Vanguard.Wait()在Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串outputName,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 settings, ICallbackRegistrar callbackRegistrar) 信息:此外,如果安装了测试发现器和执行器,您可以尝试指定“/UseVsixExtensions”命令在计算机上作为 vsix 扩展,并且您的安装支持 vsix 扩展。示例:vstest.console.exe myTests.dll /UseVsixExtensions:true VSTest 测试运行失败,退出代码:1

是的,一些测试正在使用 async/await。相同的 .runsettings 文件在 Visual Studio 2015 中工作正常。如果我按照建议操作并添加以下选项:/UseVsixExtensions:true,结果是相同的。我怎样才能解决这个问题?

code-coverage azure-devops

1
推荐指数
1
解决办法
2729
查看次数