Я использую NUnit для тестирования и мне очень нравятся тестовые примеры. В NUnit вы можете легко установить каждое имя теста в тестовом примере, используя функцию SetName в классе TestCaseData.
Есть ли в xUnit аналогичная функция для этого?
В настоящее время я вижу только один тест в обозревателе тестов, хотя в тестовом наборе 6 тестов.
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).
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 задать имя для каждого теста в тестовом наборе?
Я использую NUnit для тестирования и мне очень нравятся тестовые примеры. В NUnit вы можете легко установить каждое имя теста в тестовом примере, используя функцию SetName в классе TestCaseData.
Есть ли в xUnit аналогичная функция для этого?
В настоящее время я вижу только один тест в обозревателе тестов, хотя в тестовом наборе 6 тестов.
[b]xUnit-тест[/b]
[code]public class LogHandler : TestBase { private ILogger _logger;
public LogHandler() { //Arrange LogAppSettings logAppSettings = GetAppSettings("Log");
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); } } [/code]
[b]Окно тестирования xUnit[/b]
[img]https://i.sstatic.net/EwcRX.png[/img]
Здесь должно быть 6 тестов вместо одного! (игнорируйте GetOrganisationStatuses).
[b]Тестовый пример NUnit[/b]
[code]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"); } } [/code]
[b]Окно NUnit-теста[/b]
[img]https://i.sstatic.net/6xn4f.png[/img]
Это то, что я хочу от xUnit!
[b]Как в xUnit задать имя для каждого теста в тестовом наборе?[/b]
Я использую XUnit для запуска модульных тестов в коде C#.
У меня есть много абстрактных классов модульных тестов, которые принимают один стандартный дополнительный довольно сложный параметр (в по сравнению со стандартной настройкой тестового класса...
Мы проводим файлы конфигурации для разных сред в нашем репо. В рамках процесса CI я хотел бы сделать, чтобы эти файлы конфигурации всегда действительны. Для этого я создал этот тест, который копирует конфигурации, пытается запустить сервер и сразу...
Мы проводим файлы конфигурации для разных сред в нашем репо. В рамках процесса CI я хотел бы сделать, чтобы эти файлы конфигурации всегда действительны. Для этого я создал этот тест, который копирует конфигурации, пытается запустить сервер и сразу...
Как вы можете видеть на скриншоте, я могу запустить тест Xunit через cmd, однако в обозревателе тестов тест не найден.
У меня есть эти пакеты от nuget: п>
После небольшого поиска в Интернете я попробовал следующее исправление:
Я использовал Graph SDK (Microsoft.Graph 5.61.0) для тестирования исправления события с разрешения приложения
/*Calendars.ReadWrite | Application | Read and write calendars in all mailboxes | Yes*/
var client = GetAppGraphServiceClient(config);
if...