如何为n单元测试使用多个TestCaseSource属性

本文关键字:TestCaseSource 属性 单元测试 | 更新日期: 2023-09-27 18:11:48

您如何使用多个TestCaseSource属性来为N-Unit 2.62中的测试提供测试数据?

我目前正在做以下事情:

[Test, Combinatorial, TestCaseSource(typeof(FooFactory), "GetFoo"), TestCaseSource(typeof(BarFactory), "GetBar")]
FooBar(Foo x, Bar y)
{
 //Some test runs here.
}

我的测试用例数据源看起来像这样:

internal sealed class FooFactory
{
    public IEnumerable<Foo> GetFoo()
    {
        //Gets some foos.
    }
}

    internal sealed class BarFactory
{
    public IEnumerable<Bar> GetBar()
    {
        //Gets some bars.
    }
}

不幸的是,N-Unit甚至不会启动测试,因为它说我提供了错误的参数数量。我知道您可以指定一个TestCaseObject作为返回类型并传入一个对象数组,但是我认为这种方法是可能的。

你能帮我解决这个问题吗?

如何为n单元测试使用多个TestCaseSource属性

在这种情况下使用的适当属性是ValueSource。实际上,您为每个参数指定了一个数据源,如下所示。

public void TestQuoteSubmission(
    [ValueSource(typeof(FooFactory), "GetFoo")] Foo x, 
    [ValueSource(typeof(BarFactory), "GetBar")] Bar y)
{
    // Your test here.
}

这将启用我正在使用TestCaseSource属性寻找的功能类型。