使用 VS 测试资源管理器时如何通过 xUnit.net Trait 属性过滤单元测试?

问题描述 投票:0回答:1

假设我有带有如下签名的集成测试:

[Fact]
[Trait("Category", "Integration")]
public async Task FooTest()

如果我只想在 dotnet core 中运行单元测试我可以有选择地运行测试:

dotnet test --filter category!=Integration

如何使用 Visual Studio 测试资源管理器实现相同的目标?

我考虑过使用 .runsettings 文件,但它似乎不支持向其传递过滤器参数。

我不想使用播放列表文件,因为我必须手动使其与单元或集成测试的任何更改保持同步。

相关问题无法再使用 VS 2019 预览版在测试资源管理器中按特征进行分组

.net visual-studio unit-testing xunit.net test-explorer
1个回答
0
投票

我知道你说过你不想使用播放列表,但我认为这可能是最好的答案。

使用

Not
关键字进行匹配将排除您的过滤器,因此以下播放列表将包含解决方案中且不属于“集成”类别的任何 xUnit 测试。

<Playlist Version="2.0">
  <Rule Match="Not" >
      <Property Name="Trait" Value="Category [Integration]" />  
  </Rule>
</Playlist>

这种方法还意味着您在添加更多测试时不需要更新播放列表。它们会被自动拾取。

MSTest 的格式略有不同。

<Playlist Version="2.0">
    <Rule Match="Not">
        <Property Name="Trait" Value="Integration" />
    </Rule>
</Playlist>

您可以使用多个

Rule
元素和
All
关键字来排除多个特征。

<Playlist Version="2.0">
    <Rule Match="All">
        <Rule Match="Not" >
            <Property Name="Trait" Value="Category [Integration]" />  
        </Rule>
        <Rule Match="Not" >
            <Property Name="Trait" Value="Category [foo]" />  
        </Rule>
        <Rule Match="Not" >
            <Property Name="Trait" Value="Category [bar]" />  
        </Rule>
    </Rule>
</Playlist>

我通过从 Test Explorer 学习页面 上提供的示例开始,并根据 Microsoft 的其他类似 XML 模式进行推断,发现了这一点。我无法在线找到此功能的文档。

© www.soinside.com 2019 - 2024. All rights reserved.