tra*_*max 5 msbuild teamcity xunit xunit.net
我正在将我的项目从NUnit移动到xUnit测试框架.我们正在通过MSBuild任务在TeamCity中执行测试.我想按类别排除测试.在NUnit和Teamcity中,这很简单.
我将如何在xUnit中进行此操作?
Msbuild目标如下所示:
<Target Name="xUnitTests">
<xunit Assembly="$(SolutionDir)\Tests\bin\Debug\MyApp.Tests.exe" />
</Target>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想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);
}
Run Code Online (Sandbox Code Playgroud)
您可以在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>
Run Code Online (Sandbox Code Playgroud)
TraitAttribute在测试中使用Execmsbuild 文件中的任务以及带有/-trait "Category=database"参数的 xunit.console.clr4.exe 运行程序。
另一种方法是不使用 msbuild,而是在 TeamCity 中创建一个额外步骤,在其中直接运行 xunit 控制台。您可以在 xunit 项目文件中指定程序集。这是我用于 TeamCity 和 XUnit.net 的解决方案。我将 xunit 项目文件保存在解决方案项目文件夹中,并手动将测试程序集添加到其中。
| 归档时间: |
|
| 查看次数: |
4842 次 |
| 最近记录: |