gpt4 book ai didi

c# - xUnit.net 理论,其中 MemberData 来自派生类

转载 作者:太空狗 更新时间:2023-10-29 22:21:27 24 4
gpt4 key购买 nike

使用 xUnit.net,Theory 是否有可能使其 MemberData 源自派生类?

public abstract class BaseTest
{
public abstract IEnumerable<object[]> Data();

[Theory]
[MemberData(nameof(Data))]
public void TestData(string expected, string actual)
{
// assert goes here
}
}

public class ComplexTest : BaseTest
{
public override IEnumerable<object[]> Data()
{
// data goes here
}
}

上面的代码会导致以下错误消息:

System.NotSupportedException : Specified method is not supported.

最佳答案

另一种方法(和 IMO 清洁器)是将您的测试场景放在它们自己的特定类中,并将每个场景集定义为单独的 MemberData 属性:

public class BaseTest
{
[Theory]
[MemberData(nameof(TestScenarios1.Data), MemberType = typeof(TestScenarios1)]
[MemberData(nameof(TestScenarios1.MoreData), MemberType = typeof(TestScenarios1)]
[MemberData(nameof(TestScenarios2.DifferentData), MemberType = typeof(TestScenarios2)]
public void TestData(string expected, string actual)
{
// assert goes here
}
}

public class TestScenarios1
{
public static IEnumerable<object[]> Data()
{
// data goes here
}

public static IEnumerable<object[]> MoreData()
{
// data goes here
}
}

public class TestScenarios2
{
public static IEnumerable<object[]> DifferentData()
{
// data goes here
}
}

关于c# - xUnit.net 理论,其中 MemberData 来自派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com