xunit: получить имя метода теста в классе ClassData - PullRequest
0 голосов
/ 06 сентября 2018

Это мой пример теста,

    [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();
    }

}

Я хочу напечатать текущий тест (т. Е. Test3 вв этом случае) имя метода внутри класса GetTestData.Как это может быть достигнуто.Заранее спасибо.

1 Ответ

0 голосов
/ 10 сентября 2018

Этого можно добиться с помощью DataAttribute в Xunit следующим образом:

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;
    }

}

...