XUnit — отображение названий тестов для данных участников теории (TestCase)C#

Место общения программистов C#
Ответить
Anonymous
 XUnit — отображение названий тестов для данных участников теории (TestCase)

Сообщение Anonymous »

Я использую NUnit для тестирования и мне очень нравятся тестовые примеры. В NUnit вы можете легко установить каждое имя теста в тестовом примере, используя функцию SetName в классе TestCaseData.

Есть ли в xUnit аналогичная функция для этого?

В настоящее время я вижу только один тест в обозревателе тестов, хотя в тестовом наборе 6 тестов.

xUnit-тест

Код: Выделить всё

public class LogHandler : TestBase
{
private ILogger _logger;

public LogHandler()
{
//Arrange
LogAppSettings logAppSettings = GetAppSettings("Log");

IOptions options = Options.Create(logAppSettings);

LogService logService = new LogService(new Mock().Object, options);

LogProvider logProvider = new LogProvider(logService);

_logger = logProvider.CreateLogger(null);
}

public static IEnumerable TestCases => new[]
{
new object[] { LogLevel.Critical,
new EventId(),
new Exception(),
1 },
new object[] { LogLevel.Error,
new EventId(),
new Exception(),
1 },
new object[] { LogLevel.Warning,
new EventId(),
new Exception(),
0 },
new object[] { LogLevel.Information,
new EventId(),
new Exception(),
0 },
new object[] { LogLevel.Debug,
new EventId(),
new Exception(),
0 },
new object[] { LogLevel.Trace,
new EventId(),
new Exception(),
0 },
new object[] { LogLevel.None,
new EventId(),
new Exception(),
0 }
};

[Theory, MemberData(nameof(TestCases))]
public void Test(LogLevel logLevel, EventId eventId, Exception exception, int count)
{
//Act
_logger.Log(logLevel, eventId, null, exception, null);

//Assert
int exceptionCount = Database.Exception.Count();

Assert.Equal(exceptionCount, count);
}
}
Окно тестирования xUnit

Изображение


Здесь должно быть 6 тестов вместо одного! (игнорируйте GetOrganisationStatuses).

Тестовый пример NUnit

Код: Выделить всё

public static IEnumerable TestDatabaseCases
{
get
{
yield return new TestCaseData(LogLevel.Critical,
new EventId(1),
new Exception("Exception"),
0,
1).SetName("InsertException_Should_Insert_When_LogLevel_Critical");

yield return new TestCaseData(LogLevel.Error,
new EventId(1),
new Exception("Exception"),
0,
1).SetName("InsertException_Should_Insert_When_LogLevel_Error");

yield return new TestCaseData(LogLevel.Warning,
new EventId(1),
new Exception("Exception"),
0,
0).SetName("InsertException_Should_Not_Insert_When_LogLevel_Warning");

yield return new TestCaseData(LogLevel.Information,
new EventId(1),
new Exception("Exception"),
0,
0).SetName("InsertException_Should_Not_Insert_When_LogLevel_Information");

yield return new TestCaseData(LogLevel.Debug,
new EventId(1),
new Exception("Exception"),
0,
0).SetName("InsertException_Should_Not_Insert_When_LogLevel_Debug");
}
}
Окно NUnit-теста

Изображение


Это то, что я хочу от xUnit!

Как в xUnit задать имя для каждого теста в тестовом наборе?

Подробнее здесь: https://stackoverflow.com/questions/467 ... a-testcase
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»