[NUnit TestCaseSource在基类中,带有派生类的数据

问题描述 投票:0回答:1

我想知道是否有一种方法可以在基本测试类中使用TestCaseSource,并以通用的方式从派生类中提供数据。

例如,如果我有以下基类:

public abstract class Base<T>
{
    protected static T[] Values;

    [TestCaseSource(nameof(Values))]
    public void MyTest(T[] values)
    {
        // Some test here with the values;
    }

}

以及以下派生类

[TestFixture]
public class Derived : Base<string>
{

    [OneTimeSetup]
    public void OneTimeSetup()
    {
        Values = new[] { "One", "Two" };
    }

    [TestCaseSource(nameof(Values))
    public void DerivedSpecificTest(T[] values)
    {
        // Some test here with the values;
    }

}

我认为我做的是不正确的,因为在运行派生类测试时,两个测试都出现此异常:Failed: System.Exception: The test case source could not be found.

但是,该示例应涵盖我正在尝试做的事情(如果可能的话)。本质上,我想知道是否可以在基类中将TestCaseSource与派生类提供的数据一起使用。

感谢您的任何帮助,如果需要澄清,我可以回答问题。

我还应该提到,如果我将Values初始化为空,长度为零的数组,则测试返回的结果不确定。我认为这是因为在创建测试时数据发生了变化(NUnit的某些行为?)。

并且如果不使用TestCaseSource,我可以让测试运行,而只需用属性Test标记测试,然后将测试逻辑插入每个数组值的循环中即可。这是不理想的,因为当测试失败时,由于每个输入都没有分离出来,因此很难确切地知道是哪个输入导致测试失败。

我想知道是否有一种方法可以在基本测试类中使用TestCaseSource,并以通用方式从派生类提供数据。例如,如果我有以下基类:public abstract ...

c# nunit testcase base-class
1个回答
0
投票

这应该会让您入门,毫无疑问,还有一个更优雅的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.