如何使用将静态成员方法作为参数的 [Theory] ​​标记进行 C# XUnit 测试?

How do I a C# XUnit test using a [Theory] tag that takes static member methods as a parameter?

我在 .Net/C# 中使用 XUnit。 我有几个 class 具有相似签名的静态方法。

考虑以下 class 定义:

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 测试方法以使用 [理论] 来接受静态 class 成员方法的多个定义?

谢谢,JohnB

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