Коллекции параллельных тестов xUnit

#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 . Однако он используется для устройств сбора, которые вы, похоже, не используете. Смотрите ссылку Стефана