NUnit, параллельное выполнение тестов
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 10.12.21 17:26
Оценка:
VS2022.

Есть больше 100 тысяч тривиальных NUnit-тестов — просто куча методов с атрибутом [Test]

Уже хочется их выполнять параллельно.

Галочка в Test Explorer "Run Test In Parallel" не помогает.

Запуск через vstest.console.exe с указанием параметра /Parallel тоже не помогает.

Гугленье ничего вразумительного не дало...

У кого нибудь получалось запускать NUnit тесты параллельно?

Куда копать?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Отредактировано 10.12.2021 17:44 DDDX . Предыдущая версия .
Re: NUnit, параллельное выполнение тестов
От: Nonmanual Worker  
Дата: 10.12.21 18:25
Оценка: 12 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>VS2022.


КД>Есть больше 100 тысяч тривиальных NUnit-тестов — просто куча методов с атрибутом [Test]


КД>Уже хочется их выполнять параллельно.


КД>Куда копать?


1. Если используете runsettings файл — то смотри <RunConfiguration><MaxCpuCount>
2. смотри атрибуты Parallelizable. Может у сборок выстален однопоток.
Re[2]: NUnit, параллельное выполнение тестов
От: Nonmanual Worker  
Дата: 10.12.21 18:27
Оценка:
И проверь на vs 2019. Там точно это работает.
Re[2]: NUnit, параллельное выполнение тестов
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 10.12.21 19:48
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

КД>>Есть больше 100 тысяч тривиальных NUnit-тестов — просто куча методов с атрибутом [Test]

КД>>Уже хочется их выполнять параллельно.

NW>1. Если используете runsettings файл — то смотри <RunConfiguration><MaxCpuCount>


Замутил такой test.runsettings:
<?xml version="1.0" encoding="utf-8" ?> 
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <MaxCpuCount>10</MaxCpuCount>
  </RunConfiguration>
</RunSettings>

Подключил его к проекту.
  В Test Explorer он вроде как выбран.

В IDE тесты параллельно не выполняются.

vstest.console.exe с "/Settings:.\..\..\test.runsettings" и /Parallel тоже работает в одно лицо.



С 2019 не пробовал...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: NUnit, параллельное выполнение тестов
От: RonWilson Россия  
Дата: 10.12.21 19:51
Оценка: 12 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, Nonmanual Worker, Вы писали:


КД>>>Есть больше 100 тысяч тривиальных NUnit-тестов — просто куча методов с атрибутом [Test]


Наверное, тут дают советы про параллельное выполнение тестов в разных классах, а Вы ожидаете параллельное выполнение тестов внутри одного класса? См. NUnit limitations
Re[4]: NUnit, параллельное выполнение тестов
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 10.12.21 20:11
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>Здравствуйте, Коваленко Дмитрий, Вы писали:


КД>>Здравствуйте, Nonmanual Worker, Вы писали:


КД>>>>Есть больше 100 тысяч тривиальных NUnit-тестов — просто куча методов с атрибутом [Test]


RW>Наверное, тут дают советы про параллельное выполнение тестов в разных классах, а Вы ожидаете параллельное выполнение тестов внутри одного класса? См. NUnit limitations


Я ожидаю нормальной эксплуатации своего 10-ядерного процессора

Проблема решилась(?) добавлением атрибута уровня сборки:

[assembly: Parallelizable(ParallelScope.All)]

TestHost.exe вроде начал больше одного ядра грузить.

Визуально в 10 раз не ускорилось, но, по крайней мере, теперь хотя бы есть направление
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[5]: NUnit, параллельное выполнение тестов
От: RonWilson Россия  
Дата: 10.12.21 20:25
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Я ожидаю нормальной эксплуатации своего 10-ядерного процессора


дык, это и есть нормальная эксплуатация, ядер-то маловато
А если серьезно, то вот добиться параллельного выполнения методов внутри одного класса я не смог, там есть костыль для nunit, но заморачиваться не захотелось
Re[6]: NUnit, параллельное выполнение тестов
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 10.12.21 20:36
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>А если серьезно, то вот добиться параллельного выполнения методов внутри одного класса я не смог, там есть костыль для nunit, но заморачиваться не захотелось


У меня под 30-тысяч классов с тестами, переживу как-нибудь
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[5]: NUnit, параллельное выполнение тестов
От: Nonmanual Worker  
Дата: 10.12.21 21:19
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:


КД>Визуально в 10 раз не ускорилось, но, по крайней мере, теперь хотя бы есть направление


Server mode для GC пропиши для TestHost.exe или что там у тебя запускает тесты.
Re: NUnit, параллельное выполнение тестов. Фтопку
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 11.12.21 18:39
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Есть больше 100 тысяч тривиальных NUnit-тестов — просто куча методов с атрибутом [Test]


КД>Уже хочется их выполнять параллельно.


Погонял эту "параллельность" на большом наборе (49 тысяч с копейками) тестов.

2.5 часа оно ехало, Карл! ДВА С ПОЛОВИНОЙ ЧАСА! В vstest.console.exe.

По началу очень бодро, а потом все медленнее, медленнее, медленнее...

В одно лицо этот же набор проехал в консоле за 15 минут.

----
Где-то на краю сознания мелькнула мысль — "интересно, почему и на каком уровне затык происходит?", но не более
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: NUnit, параллельное выполнение тестов. Фтопку
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 12.12.21 15:42
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>По началу очень бодро, а потом все медленнее, медленнее, медленнее...

КД>В одно лицо этот же набор проехал в консоле за 15 минут.

А если использовать не студийный runner, а например консольный или тот, что от JB (только для последнего нужно что-то из их продуктов поставить — Rider или Resharper)?
Re[3]: NUnit, параллельное выполнение тестов. Фтопку
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 12.12.21 20:57
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

КД>>По началу очень бодро, а потом все медленнее, медленнее, медленнее...

КД>>В одно лицо этот же набор проехал в консоле за 15 минут.

МР>А если использовать не студийный runner, а например консольный или тот, что от JB (только для последнего нужно что-то из их продуктов поставить — Rider или Resharper)?


Я уже потерял интерес к этой проблеме и поехал дальше

Потом, может быть, вернусь к ней и попробую.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.