Как выполнить тест C# XUnit с использованием тега [Theory], который принимает в качестве параметра методы-члены stati c? - PullRequest
0 голосов
/ 11 июля 2020

Я работаю с XUnit в .Net / C#. У меня есть несколько классов, которые c методы с похожими сигнатурами.

Рассмотрим следующие определения классов:

public class FooClass
{
    public static string Generate(SomeOtherClass p_class)
    {
    }
}

public class FooClass1
{
    public static string Generate(SomeOtherClass p_class)
    {
    }
}

Я хотел бы написать один тест, который принимает в качестве параметров:

FooClass.Generate(p_class);
FooClass1.Generate(p_class1);

Учитывая следующее определение метода тестирования:

[Theory]
public void TEST_Generate(??????)
{
}

Как мне настроить свой тестовый метод XUnit для использования [ Theory] для принятия нескольких определений методов-членов класса stati c?

Спасибо, JohnB

1 Ответ

0 голосов
/ 15 июля 2020
public static IEnumerable<object[]> TestData()
{
  Func<string> p1 = () => FooClass.Generate(new SomeOtherClass());
  yield return new object[] { p1 };
  Func<string> p2 = () => FooClass1.Generate(new SomeOtherClass());
  yield return new object[] { p2 };
}

[Theory]
[MemberData(nameof(TestData))]
public void Test_Generate(Func<string> func)
{
  var result = func();
  Assert.Equal("expected", result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...