У меня есть модульные тесты в моем проекте C#
(VisualStudio 2015
, Nunit
). Я хочу проверить методы во многих разных ситуациях с разными параметрами, для этого я использовал TestCases. Каждый метод тестирования работает очень медленно - несколько секунд, а число TestCases в моих проектах растет.Платформа тестирования .NET с параллельными тестовыми шкафами
Итак, теперь тестирование занимает несколько минут. Я попытался провести параллельные эти тесты, переместив каждый тест на разделение TestFixture - Nunit
позволяет параллельно запускать TestFixtures - Nunit Documentation. Это немного изменило ситуацию, но не значительно. Я хочу проводить параллельные тесты не на уровне TestFixture, а на уровне тестовых регистров. Я не знаю, как это сделать. Я прочитал документацию для Nunit
, Xunit
, MBUnit
и т. Д. И не нашел ответа.
Как я могу запускать свои тесты параллельно, таким образом, чтобы тестовые окна запускались одновременно? Какую структуру использовать?
Мои тесты пример псевдокода:
public static class GeneralTestCases
{
public static IEnumerable TestStoresCredentials
{
get
{
yield return new TestCaseData(...).SetName("incorrect password");
...
yield return new TestCaseData(...).SetName("incorrect login");
}
}
}
[ TestFixture ]
[ Parallelizable ]
internal class GetProducts : BaseTest
{
[ Test ]
[ TestCaseSource(typeof(GeneralTestCases), "TestCases") ]
public void ReceiveProducts(TestCase case)
{
// ------------ Arrange
var service = CreateService(case.User, case.Key, ...);
// ------------ Act
var serviceResponse = service.GetProducts(case.SpecialType);
// ------------ Assert
...
serviceResponse.Message.Should().NotBeNullOrEmpty();
...
}
}
[ TestFixture ]
[ Parallelizable ]
internal class GetOrders : BaseTest
{
[ Test ]
[ TestCaseSource(typeof(GeneralTestCases), "TestCases") ]
public void ReceiveOrders(TestCase case)
{
// ------------ Arrange
var service = CreateService(case.User, case.Key, ...);
// ------------ Act
var serviceResponse = service.GetOrders(case.SpecialType);
// ------------ Assert
...
serviceResponse.Message.Should().NotBeNullOrEmpty();
...
}
}
Update1: Я думаю о nCrunch, но я не это поможет или нет
может быть, это помогает https://stackoverflow.com/questions/3313163/how-can-i-run-nunit-tests-in-parallel – C1sc0