我有100个使用TestCaseSource
属性运行的测试用例。这些测试被分为各种IEnumerable<TestCaseData>
结构,并针对同一测试运行。对于IEnumerable<TestCaseData>
中的每个测试,我都想出一个很好的方法来拥有相同的测试名称。
我不想在每个SetName
上都打TestCaseData
。到目前为止,我想到的最好的方法是使测试与TestCaseData
集的比例为1:1,并使每个测试用例都继承测试名称。但是,这会导致重复代码很多,因为测试执行相同的操作,只是数据发生了变化。
我目前拥有的是:
public static class TestCases
{
public static IEnumerable<TestCaseData> SingleOperations
{
get
{
yield return new TestCaseData("", "").Returns(0);
// 100s of more test cases.
}
}
public static IEnumerable<TestCaseData> MultipleOperations
{
get
{
yield return new TestCaseData("", "").Returns(0);
// 100s of more test cases.
}
}
// Multiple more sets of IEnumerable<TestCaseData>.
}
[TestFixture]
public class LevenshteinTests
{
[TestCaseSource(typeof(TestCases), nameof(TestCases.SingleOperations))]
public int Foo_Bar_SingleOperations(string a, string b)
{
return Foo.Bar(a, b);
}
[TestCaseSource(typeof(TestCases), nameof(TestCases.MultipleOperations))]
public int Foo_Bar_MultipleOperations(string a, string b)
{
return Foo.Bar(a, b);
}
// Multiple more tests that do the same thing.
}
有什么方法可以实现以下目标?
[TestFixture]
public class LevenshteinTests
{
[TestCaseSource(typeof(TestCases), nameof(TestCases.SingleOperations))]
[TestCaseSource(typeof(TestCases), nameof(TestCases.MultipleOperations))]
// Multiple more sets of TestCaseSource.
public int Foo_Bar_Operations(string a, string b)
{
return Foo.Bar(a, b);
}
}
在哪里可以轻松地在每个TestCaseSource
的所有测试用例中添加一个单独的名称?