我想知道是否有一种方法可以在基本测试类中使用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 ...
这应该会让您入门,毫无疑问,还有一个更优雅的解决方案。