使用 Xunit,如何获取当前正在运行的测试的名称?
public class TestWithCommonSetupAndTearDown : IDisposable
{
public TestWithCommonSetupAndTearDown ()
{
var nameOfRunningTest = "TODO";
Console.WriteLine ("Setup for test '{0}.'", nameOfRunningTest);
}
[Fact]
public void Blub ()
{
}
public void Dispose ()
{
var nameOfRunningTest = "TODO";
Console.WriteLine ("TearDown for test '{0}.'", nameOfRunningTest);
}
}
编辑:
特别是,我正在寻找 NUnits TestContext.CurrentContext.Test.Name
属性的替代品。
最佳答案
您可以使用 BeforeAfterTestAttribute
来解决您的问题。有一些方法可以使用 Xunit 来解决您的问题,这就是创建 TestClassCommand 或 FactAttribute 和 TestCommand 的子类,但我认为 BeforeAfterTestAttribute
是最简单的方法。查看下面的代码。
public class TestWithCommonSetupAndTearDown
{
[Fact]
[DisplayTestMethodName]
public void Blub()
{
}
private class DisplayTestMethodNameAttribute : BeforeAfterTestAttribute
{
public override void Before(MethodInfo methodUnderTest)
{
var nameOfRunningTest = "TODO";
Console.WriteLine("Setup for test '{0}.'", methodUnderTest.Name);
}
public override void After(MethodInfo methodUnderTest)
{
var nameOfRunningTest = "TODO";
Console.WriteLine("TearDown for test '{0}.'", methodUnderTest.Name);
}
}
}
关于c# - 获取 Xunit 中运行测试的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16484839/