NUnit работает классы параллельно - PullRequest
0 голосов
/ 20 ноября 2018

Я немного сбит с толку из-за атрибута 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 Ответ

0 голосов
/ 20 ноября 2018

Начиная с простого ...

  1. Если вы ничего не делаете с ParallelizableAttribute, тогда ничего не работает параллельно.: -)

  2. Если вы добавите Parallelizable к каждому устройству, тогда три устройства будут работать параллельно, а отдельные тесты - нет.Таким образом, одновременно может быть запущено до трех вещей, по одному от каждого класса.

  3. Если вы добавите [Parallelizable(ParallelScope.Fixtures)] на уровне сборки, эффект будет таким же, как (2).Это следует делать только в том случае, если почти все ваших приборов будут успешно работать параллельно, и в этом случае вы отметите те, которые не могут, как [NonParallelizable].Мой опыт в оказании помощи людям заключается в том, что слишком много людей делают это, не осознавая, что их тесты не всегда могут работать правильно параллельно, если они не написаны для этого.Начнем с того, что по умолчанию безопаснее использовать непараллельный режим и добавлять его только тогда, когда он работает на вас.

  4. Начиная с (2), измените атрибут в A и B на [Parallelizable(ParallelScope.All)]или [Parallelizable(ParallelScope.Self + ParallelScope.Children).Мне нравится более длинная форма, потому что читателям намного понятнее, что она делает.Это будет иметь именно тот эффект, который вы хотите.

Еще одно замечание: вам, вероятно, следует убедиться, что любой прибор, в котором вы указываете порядок тестов, не работает параллельно.NUnit позволяет указать как параллельный, так и порядок без ошибок.В этом случае просто запускает тесты в указанном вами порядке, но это может не соответствовать вашим ожиданиям.4.

...