Используя XUnit, у меня есть метод с несколькими атрибутами MemberData (ссылаясь на сложную структуру данных).Это работает хорошо, но проблема в том, что если какой-либо из наборов данных MemberData не прошел тест, трудно определить, какой из них был, потому что в VS Test Explorer рядом с уведомлением о неудачном тесте вместо имени набора данных отображаются аргументы метода.
пример:
[Theory]
[MemberData(nameof(DataSet1))]
[MemberData(nameof(DataSet2))]
[MemberData(nameof(DataSet3))]
[MemberData(nameof(DataSet4))]
public void TestMethod(IEnumerable<string> argument1, IEnumerable<string> argument2, decimal argument3) {
Assert.True(argument3 == 100m);
}
public static IEnumerable<object[]> DataSet1
=> new object[][]
{
new object[]
{
new List<string>()
{
"string 1",
"string 2",
"string 3",
"string 4",
"string 5",
},
new List<string>()
{
"string 1",
"string 2",
"string 3",
"string 4",
"string 5",
},
100m
}
};
VS Вывод Test Explorer (невозможно добавить изображение из-за отсутствия репутации, поэтому добавляется текст):
Result1 Name: (...) TestMethod(argument1: ["string 1", "string 2", "string 3", "string 4", "string 5"], argument2: ["string 1", "string 2", "string 3", "string 4", "string 5"], argument3: 200)
Result1 Outcome: Failed
поэтому в качестве обходного пути я добавляю еще один аргумент с именем набора данных, например:
public void TestMethod(string testName, // added workaround
IEnumerable<string> argument1, IEnumerable<string> argument2, decimal argument3) {
Assert.True(argument3 == 100m);
}
public static IEnumerable<object[]> DataSet1
=> new object[][]
{
new object[]
{
nameof(DataSet1), // added workaround
new List<string>()
{
"string 1",
(...)
, а затем вижу имя набора данных в Вывод VS Test Explorer:
Result1 Name: (...) TestMethod(
testName: "DataSet2", // now properly shows failed dataset name
argument1: ["string 1", "string 2", "string 3", "string 4", "string 5"], argument2: ["string 1", "string 2", "string 3", "string 4", "string 5"], argument3: 200)
Result1 Outcome: Failed
Так есть ли простой способ увидеть имя набора данных MemberData в VS Test Explorer без обходного пути?