如何使用将静态成员方法作为参数的 [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);
}
我在 .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);
}