gpt4 book ai didi

xunit - 将对象作为测试参数

转载 作者:行者123 更新时间:2023-12-03 23:15:37 33 4
gpt4 key购买 nike

我试图编写一个测试来检查派生类中的方法是否被错误地覆盖。所以我尝试了以下方法。但无论我尝试什么,它似乎都不允许我“注入(inject)”我的对象。

[Theory]
[xxxData(new BaseClass())]
[xxxData(new DerivedClass())]
public void Test_Stuff(BaseClass obj)
{
// ...
}

最佳答案

假设我了解您的目标,我会看到两种方法:

  • 使用 InlineDataAttribute并传递类型
  • 使用 MemberDataAttribute (xunit.net v1 中的属性数据)
    [Theory]
    [InlineData(typeof(BaseClass))]
    [InlineData(typeof(DerivedClass))]
    public void Test_Stuff(Type type/*BaseClass obj*/)
    {
    var obj = Activator.CreateInstance(type) as BaseClass;
    CheckConstrain(obj);
    }


    [Theory]
    [MemberData("GetObjects")]
    public void Test_Stuff2(BaseClass obj)
    {
    CheckConstrain(obj);
    }

    public static IEnumerable<object[]> GetObjects
    {
    get
    {
    return new[]
    {
    new object[] { new BaseClass() },
    new object[] { new DerivedClass() }
    };
    }
    }

    private static void CheckConstrain(BaseClass baseClass)
    {
    Assert.True(baseClass.Foo() <= 1);
    }

  • 另请参阅此相关答案 Pass complex parameters to [Theory]

    关于xunit - 将对象作为测试参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202242/

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