C# 能否将XUnit测试标记为显式?
我正在从NUnit过渡到XUnit(在C#中),我正在编写一些“集成测试”(ITs),我不一定希望测试运行程序作为我的自动构建过程的一部分运行。我通常在手动测试时这样做,因为环境因素(缺少数据等),整个端到端流程可能无法工作 在NUnit中,您可以使用标记测试,测试运行程序只会跳过它(除非您使用特定的标记测试,并告诉测试运行程序显式地以该类别为目标) XUnit是否有类似的方法从测试运行程序中排除测试?我想我是这样的。显然,您可以像这样修改C# 能否将XUnit测试标记为显式?,c#,.net,testing,integration-testing,xunit.net,C#,.net,Testing,Integration Testing,Xunit.net,我正在从NUnit过渡到XUnit(在C#中),我正在编写一些“集成测试”(ITs),我不一定希望测试运行程序作为我的自动构建过程的一部分运行。我通常在手动测试时这样做,因为环境因素(缺少数据等),整个端到端流程可能无法工作 在NUnit中,您可以使用标记测试,测试运行程序只会跳过它(除非您使用特定的标记测试,并告诉测试运行程序显式地以该类别为目标) XUnit是否有类似的方法从测试运行程序中排除测试?我想我是这样的。显然,您可以像这样修改[Fact]属性:[Fact(Skip=“reason”
[Fact]
属性:[Fact(Skip=“reason”)]
。这将跳过测试,但是如果不将属性修改回正常状态,您将无法手动运行它
我会继续寻找更好的方法。你可以使用
[Trait]
属性,比如在xunit中
这进一步继承了单元、集成等类别。Jimmy Bogard通过出色的RunnableInDebugOnlyAttribute解决了这一问题。请参阅此博客帖子: 我曾经
因此,这甚至不被认为是构建服务器上的测试,而通常构建调试版本的开发人员会注意到该测试失败,我希望有更好的方法来实现这一点。我也有一堆“性能”类型的测试,我想保留它们,这样我可以手动运行它们,但我不希望它们由测试运行者自动运行。我正在使用的解决方案(我不喜欢)是改变
[事实]
至//[事实]
我不喜欢这个解决方案的主要原因是,当我想手动运行测试时,它需要额外的步骤,即我必须先取消注释[Fact]
。但它确实对我有用,尽管有点笨拙
我真正想要的是一种将测试作为测试进行营销的方法,但这种方法只能手动调用,不能由测试运行者调用。但是我还没有找到一种方法来做到这一点。这并不能清楚地表示一种方法来修饰测试方法,使其能够手动测试,但不能在整个测试套件中运行。
[Trait ("Category", "Integration")]
public class RunnableInDebugOnlyAttribute : FactAttribute
{
public RunnableInDebugOnlyAttribute()
{
if (!Debugger.IsAttached)
{
Skip = "Only running in interactive mode.";
}
}
}
#if DEBUG
// Must test manually with https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
[Fact]
#endif