У меня есть серия тестов, в которых я хочу использовать те же данные тестовых данных для кучи разных тестов.
например:
[Test, TestCaseSource("TestData")]
public void Test1(Foo foo)
{
// test 1
}
[Test, TestCaseSource("TestData")]
public void Test2(Foo foo)
{
// test 2
}
private static IEnumerable TestData()
{
TestCaseData data;
data = new TestCaseData(new Foo("aaa"));
yield return data;
data = new TestCaseData(new Foo("bbb"));
yield return data;
}
Это приводит к серии тестов, которые сообщают так:
Namespace.That.Is.Very.Long.TestClass.Test1(Namespace.That.Is.Very.Long.Foo)
Namespace.That.Is.Very.Long.TestClass.Test1(Namespace.That.Is.Very.Long.Foo)
Namespace.That.Is.Very.Long.TestClass.Test2(Namespace.That.Is.Very.Long.Foo)
Namespace.That.Is.Very.Long.TestClass.Test2(Namespace.That.Is.Very.Long.Foo)
... который не имеет большого значения, если вы не знаете, что "foo" не удалось.
Если как предложено в этом вопросе SO, я задал имя следующим образом:
data = new TestCaseData(new Foo("aaa"));
data.SetName("foo=aaa");
yield return data;
... тогда все мои тесты выглядят так:
foo=aaa
foo=bbb
foo=aaa
foo=bbb
Итак, я пытаюсь выяснить, как получить текущее имя метода тестирования. Это выглядело бы как как описано в этом другом вопросе SO, через TestContext.
Однако, хотя TestContext.Current.Test существует, все свойства (например, Name) вызывают исключение NullReferenceException при попытке получить к ним доступ.
Есть ли другой способ достижения этой цели предоставления более полезной информации в имени теста?