#c# #testing #continuous-integration #xunit #.net-6.0
#c# #тестирование #непрерывная интеграция #xunit #.net-6.0
Вопрос:
У нас проблема с нашим .NET 6 CI, работающим с дроном. У нас есть тесты, которые работают с реальной базой данных postgres.
Тесты отлично выполняются локально, потому что Rider не распараллеливает их.
Но в CI тесты случайным образом завершаются неудачно, потому что данные в базе данных не соответствуют ожиданиям для данного теста.
Наше понимание (в соответствии со случайностью сбоев) заключается в том, что тесты выполняются параллельно в CI.
До сих пор мы пытались использовать конфигурационный файл xUnit ( xunit.runne.json
) :
{ "parallelizeAssembly": false, "parallelizeTestCollections": false, "maxParallelThreads": -1 }
И добавление [Collection]
атрибута с именем в родительский класс всех тестовых классов :
[Collection("Database Test")]
В CI тесты выполняются с использованием dotnet test
.
Есть какие-нибудь зацепки по этому поводу ? Заранее спасибо
Комментарии:
1. Вы имеете в виду, что ваши тесты на самом деле зависят от порядка их выполнения?
2. Нет, они не зависят от порядка выполнения, их просто нужно запускать по одному за раз
3.
[Collection]
атрибут должен выполнять эту работу, если только вы не выполняете разные тесты в разных процессах4. У меня есть атрибут коллекции в классе, который расширяют мои классы тестов, должен ли я помещать его в каждый подкласс или он должен работать так ?