jam*_*the 6 nunit testcasesource
我正在使用带有TestCaseSource属性的NUnit,以与NUnit TestCaseSource将值传递给工厂以及 如何将动态对象传递给NUnit TestCase函数相同的方法对动态数据进行数据驱动测试?
在每种情况下,他们使用IEnumerable <TestCaseData>来指定数据.从Nnit文档http://nunit.org/index.php?p=testCaseSource&r=2.5中可以看出,这需要是与TestCase相同的类的静态或实例成员.
我想将它重构为另一个类,因为我想使用相同的TestCaseSource属性.有谁知道这是否可能?
小智 10
罗伯特已经回答了,但我会尝试用C#的新功能来改进他的答案.
public static class TestCasesData
{
private static string[] TestStringsData()
{
return new string[] {"TEST1", "TEST2"};
}
private static string[] TestIntsData()
{
return new in[] { 1, 2};
}
}
[TestFixture]
public class MyTest
{
[Test]
[TestCaseSource(typeof(TestCasesData ), nameof(TestCasesData .TestStringsData))]
public void TestCase1(...)
{
}
[Test]
public void TestCase2(
[ValueSource(typeof(TestCasesData), "TestIntsData")] int testData,
)
{
}
}
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作:
[TestCaseSource(typeof(CommonSource), "GetData")]
public void MyTest(...) {...}
Run Code Online (Sandbox Code Playgroud)
属性构造函数的第一个参数告诉它要查找哪个类,第二个参数告诉它要使用的特定成员名称。
如果 NUnit 要求 TestCaseSource 与测试位于同一类中,最简单的方法可能是让该方法调用您的常用方法。然后,详细信息可以保存在其他地方,以便最大限度地减少重复代码。
例如,每个测试类可能具有以下内容:
IEnumerable LocalSource()
{
return CommonSource.GetData();
}
Run Code Online (Sandbox Code Playgroud)
CommonSource 类将是一个单独的类,用于加载测试所需的数据。
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |