gpt4 book ai didi

msbuild - 基于Teamcity中特征过滤的Xunit执行测试

转载 作者:行者123 更新时间:2023-12-04 17:49:09 24 4
gpt4 key购买 nike

我正在将我的项目从 NUnit 转移到 xUnit 测试框架。我们正在通过 MSBuild 任务在 TeamCity 中执行测试。我想按类别排除测试。在 NUnit 和 Teamcity 中,这很简单。

我将如何在 xUnit 中解决这个问题?

Msbuild 目标如下所示:

  <Target Name="xUnitTests">
<xunit Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" />
</Target>

理想情况下,我想添加 Exclude="Category=database"作为 <xunit> 的属性元素,但这是无效的。

我很快浏览了 xUnit 源代码,并没有找到 msbuild runner 的这个选项。

任何其他替代方法可以忽略 msbuild runner 中的特征测试?

最佳答案

我将通过我如何做的简单示例稍微扩展 Josh Gallagher 的答案。假设您有以下测试:

[Fact]
[Trait("Category", "Integration")]
public async Task Test_for_long_running_operation()
{
var someClass = new SomeClass();
int result = await someClass.LongRunningOperationAsync()
Assert.Equal(5, result);
}

[Fact]
[Trait("Category", "Unit")]
public void Test_for_quick_operation()
{
var someClass = new SomeClass();
int result = someClass.GetSomeNumber()
Assert.Equal(3, result);
}

您的 msbuild 目标文件中可能包含以下内容:
<Target Name="xUnitTests">
<!-- For debug builds: skipping long integration tests -->
<xunit Condition="'$(Configuration)' == 'Debug'"
ExcludeTraits="Category=Integration"
Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" />

<!-- For release builds: run them all -->
<xunit Condition="'$(Configuration)' == 'Release'"
Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" />
</Target>

关于msbuild - 基于Teamcity中特征过滤的Xunit执行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com