#c# #unit-testing #xunit
#c# #модульное тестирование #xunit
Вопрос:
Я хотел бы иметь возможность запускать тестовые коллекции параллельно.
Вот что у меня есть:
[Collection("Serial_01 Non-Parallel Collection")]
[CollectionDefinition("Serial_01 Non-Parallel Collection", DisableParallelization = true)]
public class SerialTest01
{
[Fact]
public async Task SerialTest01_Test01()
{
await Task.Delay(TimeSpan.FromSeconds(5));
Assert.True(true);
}
[Fact]
public async Task SerialTest01_Test02()
{
await Task.Delay(TimeSpan.FromSeconds(5));
Assert.True(true);
}
}
[Collection("Serial_02 Non-Parallel Collection")]
[CollectionDefinition("Serial_02 Non-Parallel Collection", DisableParallelization = true)]
public class SerialTest02
{
[Fact]
public async Task SerialTest02_Test01()
{
await Task.Delay(TimeSpan.FromSeconds(5));
Assert.True(true);
}
[Fact]
public async Task SerialTest02_Test02()
{
await Task.Delay(TimeSpan.FromSeconds(5));
Assert.True(true);
}
}
Насколько я понимаю, когда я определял две коллекции, которые я ожидал, просматривая test Explorer в Visual Studio, видя, что две коллекции работают параллельно.
Однако я вижу, что они выполняются один за другим.
Что я делаю не так?
Комментарии:
1. Вы не сможете запускать их параллельно, если используете приспособления для сбора. xunit.net/docs/shared-context#collection-fixture
2.
DisableParallelization = true
означает отключить распараллеливание. Конечно, они выполняются последовательно (за исключением других проблем). Также см. раздел Параллельное выполнение тестов . Также вы злоупотребляетеCollectionDefinition
. Он должен быть определен в одном отдельном классе. Тогда имя — это то, к чему вы переходитеCollection
. Однако он используется для устройств сбора, которые вы, похоже, не используете. Смотрите ссылку Стефана