xunit:在ClassData的类中获取测试方法名称

时间:2018-09-06 16:01:07

标签: c# xunit xunit.net

这是我的示例测试,

    [Theory]
    [BeforeAfterMethod]
    [ClassData(typeof(GetTestData))]
    public void Test3(int a)
    {
        ReporterLogs.Pass("value of a: " + a);
        //TODO
    }

我的GetTestData类是

 public class GetTestData : IEnumerable<object[]>
  {
    private string _currentTestMethodName;
    private List<object[]> _data = new List<object[]>();

    public GetTestData()
    {
        Console.WriteLine(**Print test method name here**);
        _data.Add(new object[] { 10 } });
    }

    public IEnumerator<object[]> GetEnumerator()
    {
        return _data.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }

}

我想在GetTestData类中打印当前测试的方法名称(在这种情况下为 Test3 )。如何实现。预先感谢。

1 个答案:

答案 0 :(得分:0)

可以通过如下使用Xunit中的DataAttribute来实现,

public class GetTestData : DataAttribute
{
    private List<object[]> _data = new List<object[]>();

    public override IEnumerable<object[]> GetData(MethodInfo testMethod)
    {
        if (testMethod == null)
              throw new ArgumentNullException(testMethod.Name);

        _data.Add(new object[] { 10 });
        return _data;
    }

}