У меня есть сотни тестов, которые выполняются с использованием атрибута TestCaseSource
.Эти тесты разделены на различные IEnumerable<TestCaseData>
структуры и выполняются для одного и того же теста.Я не могу придумать хороший способ для каждого теста в IEnumerable<TestCaseData>
иметь одно и то же имя теста.
Я не хочу звонить SetName
каждому человеку TestCaseData
.Наилучший способ, который я до сих пор думал, - это иметь соотношение тестов 1: 1 к наборам TestCaseData
, и просто каждый тестовый набор наследует имя теста.Однако это приводит к большому количеству повторяющегося кода, потому что тесты делают то же самое, меняются только данные.
То, что у меня сейчас есть:
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
?