NUnit работает классы параллельно
Я немного запутался в атрибуте Parallel nunit:
Скажем, у меня есть 3 класса, в каждом из которых есть несколько тестов:
ClassA
- Test1
- Test2
- Test3
ClassB
- Test1
ClassC
- Test1
- Test2
Я хотел бы запустить каждый тест в ClassA и ClassB параллельно (мне нет дела до порядка)
Я также хотел бы запустить ClassC во время работы ClassA и ClassB, но в этом классе я хочу сохранить порядок, в котором я указал тесты
Итак, мой вопрос: как мне установить атрибуты, чтобы получить такое поведение?
Я проверил документ https://github.com/nunit/docs/wiki/Framework-Parallel-Test-Execution но я все еще в замешательстве
1 ответ
Начиная просто...
Если вы ничего не делаете с
ParallelizableAttribute
тогда ничего не идет параллельно.:-)Если вы добавите
Parallelizable
Для каждого прибора три прибора будут работать параллельно, но отдельные тесты не будут. То есть одновременно может быть запущено до трех вещей, по одному от каждого класса.Если вы добавите
[Parallelizable(ParallelScope.Fixtures)]
на уровне сборки эффект такой же, как (2). Вы должны делать это только в том случае, если почти все ваши приборы будут успешно работать параллельно, и в этом случае вы отметите те, которые не могут как[NonParallelizable]
, Мой опыт в оказании помощи людям заключается в том, что слишком много людей делают это, не осознавая, что их тесты не всегда могут работать правильно параллельно, если они не написаны для этого. Начнем с того, что по умолчанию безопаснее использовать непараллельный режим и добавлять его только тогда, когда он работает на вас.Начиная с (2), измените атрибут на A и B на
[Parallelizable(ParallelScope.All)]
или же[Parallelizable(ParallelScope.Self + ParallelScope.Children)
, Мне нравится более длинная форма, потому что читателям намного понятнее, что она делает. Это будет иметь именно тот эффект, который вы хотите.
Еще одно замечание: вам, вероятно, следует убедиться, что все приборы, в которых вы указываете порядок тестов, не работают параллельно. NUnit позволяет указать как параллельный, так и порядок без ошибок. В этом случае он просто запускает тесты в указанном вами порядке, но это может не соответствовать вашим ожиданиям. 4.