VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 06:47
Оценка:
Есть сборка с тестами (NUnit) в количестве 18.5 тыщ.

Отдельные тесты запускаются достаточно бодро.

А вот когда говоришь (в Test Explorer) "Run All" — студия сначала около 8 восьми минут очень долго тупит (в testhost.exe), а потом начинает их выполнять.

C XUnit (если я правильно помню название) аналогичная фигня.

Это можно как-то починить/устранить?

Я так понимаю, студия сначала строит список тестов, а потом начинает их выполнять.

Непонятно, какого она не делает это параллельно?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Отредактировано 17.03.2021 6:58 DDDX . Предыдущая версия .
Re: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 17.03.21 08:37
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Непонятно, какого она не делает это параллельно?

Непонятно: какого она это делает как черепаха. Проблемы, имхо, у нее начинаются уже при 100+ тестах, при этом само исполнение тестов летает.

Как идеи:

(1) Тесты обычные или это тест на основе данных (Theory в xunit), и если с данными — откуда они берутся (аттрибуты vs внешний источник)? Нет ли собственных типов данных используемых как параметры в таких тестах? (Они требуют правильной сериализации, т.к. в итоге становятся ключом для исполнения. + там была какая-то особенность в mstest на эту тему, которая мешать жить, но вроде воркэраундилось)

(2) Студия вроде бы результаты тестов складывала в отдельную БД (где-то около проекта) — может пришло время ее почистить?
Re[2]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 10:06
Оценка: 6 (1) :)
Здравствуйте, Mystic Artifact, Вы писали:

MA> (1) Тесты обычные или это тест на основе данных (Theory в xunit), и если с данными — откуда они берутся (аттрибуты vs внешний источник)? Нет ли собственных типов данных используемых как параметры в таких тестах? (Они требуют правильной сериализации, т.к. в итоге становятся ключом для исполнения. + там была какая-то особенность в mstest на эту тему, которая мешать жить, но вроде воркэраундилось)


У меня тесты тривиальные. Юзаю только атрибут [Test].

MA> (2) Студия вроде бы результаты тестов складывала в отдельную БД (где-то около проекта) — может пришло время ее почистить?


Хорошая мысль.

Обнаружил каталог v16\TestStore\OutputMessages

Сколько там подкаталогов/файлов — определить не получается

Раздел на HDD (даром что RAID10) — тормозит нещадно.

Тотал и WinExplorer до 150 тыщ файлов досчитали и я их прервал.

Попробую грохнуть этот каталог из командной строки
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 17.03.21 10:42
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Тотал и WinExplorer до 150 тыщ файлов досчитали и я их прервал.

КД>Попробую грохнуть этот каталог из командной строки
Можешь и %temp% заодно почистить, наверняка там горы мусора.
Re[4]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 10:46
Оценка: :))) :)))
Здравствуйте, Mystic Artifact, Вы писали:

MA> Можешь и %temp% заодно почистить, наверняка там горы мусора.


Вредное советуете — обычно там люди документы и дистрибы хранят
Re[4]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 10:48
Оценка: 18 (1)
Здравствуйте, Mystic Artifact, Вы писали:

КД>>Тотал и WinExplorer до 150 тыщ файлов досчитали и я их прервал.

КД>>Попробую грохнуть этот каталог из командной строки
MA> Можешь и %temp% заодно почистить, наверняка там горы мусора.

Тотал таки смог открыть этот каталог.
  там 2.7 млн элементов (подкаталогов?)

Капец. Дайте мне яду.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[5]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 17.03.21 10:48
Оценка:
Здравствуйте, RonWilson, Вы писали:

MA>> Можешь и %temp% заодно почистить, наверняка там горы мусора.

RW>Вредное советуете — обычно там люди документы и дистрибы хранят
Я предлагаю только поразиться числу каталогов, файлов и логов которые писать никто не просил.
Re[6]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 10:54
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

MA>Здравствуйте, RonWilson, Вы писали:


MA>>> Можешь и %temp% заодно почистить, наверняка там горы мусора.

RW>>Вредное советуете — обычно там люди документы и дистрибы хранят
MA> Я предлагаю только поразиться числу каталогов, файлов и логов которые писать никто не просил.
посмотрел в этот каталог, который находится в скрытом, а значит не для вас нечего там лазить
Re[7]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 17.03.21 10:57
Оценка:
Здравствуйте, RonWilson, Вы писали:

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

Ну правильно, есть штатный Disk Cleanup который подтирает еще и в других местах. Вполне юзабельно, если не забывать, что он вообще есть.
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 10:59
Оценка: :)
Здравствуйте, Mystic Artifact, Вы писали:

MA>Здравствуйте, RonWilson, Вы писали:


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

MA> Ну правильно, есть штатный Disk Cleanup который подтирает еще и в других местах. Вполне юзабельно, если не забывать, что он вообще есть.

что-то сомневаюсь, что он трет эти каталоги, он трет хотя бы Windows Update бэкапы и то спасибо (не спасибо! на серверных ОС — как это там работает — это еще надо постараться — 99% за пару минут и ~1% — ночь и до обеда после серьезных куммулятивных обновлениях).
Re[5]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 11:51
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Капец. Дайте мне яду.


Подытожу.

Поскольку грохнуть TestStore в обозромое время не получилось, я его переименовал и запустил удаление из командной строки.

Но эта зачистка никак не повлияла на время подготовки запуска "Run All" — 20 (ДВАДЦАТЬ, КАРЛ!) минут. Специально замерил.

Теперь надо как-то с этим жить.

PS. Это за пять месяцев (грустной и неторопливой работы) так диск засрался
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[6]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 17.03.21 12:21
Оценка: 8 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Но эта зачистка никак не повлияла на время подготовки запуска "Run All" — 20 (ДВАДЦАТЬ, КАРЛ!) минут. Специально замерил.

КД>Теперь надо как-то с этим жить.
Можно попробовать повыполнять тесты через родной NUnit раннер, посмотреть как быстро он делает хотя бы discovery, хотя я почему-то думаю, что там проблем нет (ну и общее выполнение оценить).
А так же, попробовать выполнить через "dotnet test" (mstest), который играет роль универсального ущербного интерфейса-адаптера над остальными тест-раннерами.
Ну, если упороться совсем — нагенерировать классов / тестов пустых, создать похожий проект, и поглядеть повторяется ли проблема на других машинах или у других пользователей.
А жить с этим просто — пользоваться их эксплорером ограниченно или не пользоваться вовсе. Например, пользоваться для запуска одного единственного теста (для дебага), если он с этим справляется. А остальное запускать "нормальным" раннером (если из них окажется работает быстрее).

PS: Где-то пол года назад, то, как он шевелится — мне перестало нравится буквально на 300-500 тестах, в добавок куча сборок с тестами, и абсолютно неудобный этот самый тест эксплорер. Т.к. половина из этих тестов мне не нужна была постоянно, сделал .slnf (solution filter), изъял оттуда лишние сборки с тестами, что б оно не маячило и не мешкалось.
Отредактировано 17.03.2021 12:21 Mystic Artifact . Предыдущая версия .
Re[7]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 13:08
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

КД>>Но эта зачистка никак не повлияла на время подготовки запуска "Run All" — 20 (ДВАДЦАТЬ, КАРЛ!) минут. Специально замерил.

КД>>Теперь надо как-то с этим жить.
MA> Можно попробовать повыполнять тесты через родной NUnit раннер, посмотреть как быстро он делает хотя бы discovery, хотя я почему-то думаю, что там проблем нет (ну и общее выполнение оценить).

Блин, у NUnit 2.x была отличная простенькая гуя для запуска тестов. Но они, походу, её похерили
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 13:10
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Блин, у NUnit 2.x была отличная простенькая гуя для запуска тестов. Но они, походу, её похерили


я когда разобрался как теперь запускать из командной строки, то молча пошел пить кофе
Re[9]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 13:16
Оценка:
Здравствуйте, RonWilson, Вы писали:

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


КД>>Блин, у NUnit 2.x была отличная простенькая гуя для запуска тестов. Но они, походу, её похерили


RW>я когда разобрался как теперь запускать из командной строки, то молча пошел пить кофе


ну не так все печально, но почему-то вызывает отвращение

dotnet test Microsoft.Word.csproj --filter JustLaunchThis
Re: VS2019. Тупёж при запуске всех тестов (NUnit)
От: IT Россия linq2db.com
Дата: 17.03.21 13:34
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Есть сборка с тестами (NUnit) в количестве 18.5 тыщ.


Что-то рановато. В linq2db тормоза начинаются только после ~30k тестов.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 13:51
Оценка:
Здравствуйте, RonWilson, Вы писали:

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


КД>>Блин, у NUnit 2.x была отличная простенькая гуя для запуска тестов. Но они, походу, её похерили


RW>я когда разобрался как теперь запускать из командной строки, то молча пошел пить кофе


— Скачал и установил nunit3-console.exe (3.12)
— Подключил к тестовому проекту NUnit.Console (3.12)
— Основной пакет NUnit — v3.13.1
— На всякий случай отключил NUnit3TestAdapter

Запускаю из командной строки и получаю ошибку:

  ОШИБКА
Runtime Environment
   OS Version: Microsoft Windows NT 6.2.9200.0
   Runtime: .NET Framework CLR v4.0.30319.42000

Test Files
    d:\Users\Dima\Work2\Projects\EFCore_LcpiOleDb_v2\tests\general\bin\vs2019-net50.0-Debug\Lcpi.EntityFrameworkCore.DataProvider.LcpiOleDb.Tests.General-net5_0_0.debug.dll


Errors, Failures and Warnings

1) Error :
NUnit.Engine.NUnitEngineException : The NUnit 3 driver encountered an error while executing reflected code.
  ----> System.InvalidCastException : Не удалось привести прозрачный прокси к типу "System.Web.UI.ICallbackEventHandler".
--NUnitEngineException
The NUnit 3 driver encountered an error while executing reflected code.

Server stack trace:
   в NUnit.Engine.Drivers.NUnit3FrameworkDriver.CreateObject(String typeName, Object[] args)
   в NUnit.Engine.Drivers.NUnit3FrameworkDriver.Load(String testAssemblyPath, IDictionary`2 settings)
   в NUnit.Engine.Runners.DirectTestRunner.LoadDriver(IFrameworkDriver driver, String testFile, TestPackage subPackage)
   в NUnit.Engine.Runners.DirectTestRunner.LoadPackage()
   в NUnit.Engine.Runners.DirectTestRunner.EnsurePackageIsLoaded()
   в NUnit.Engine.Runners.DirectTestRunner.RunTests(ITestEventListener listener, TestFilter filter)
   в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
   в System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

У меня проект под .NET5.

Проблема в .NET5 или я где косячу?

PS. День, фактически, фтопку
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[10]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 13:54
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Проблема в .NET5 или я где косячу?


ну у нас не такое модно как у вас

так
Автор: Коваленко Дмитрий
Дата: 17.03.21
не пойдет?

КД>PS. День, фактически, фтопку


PS. сам жду одобрения PR-ов, тоже день фтопку
Re[2]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 14:08
Оценка:
Здравствуйте, IT, Вы писали:

КД>>Есть сборка с тестами (NUnit) в количестве 18.5 тыщ.


IT>Что-то рановато. В linq2db тормоза начинаются только после ~30k тестов.


Компутер, наверное, хавно
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: RonWilson Россия  
Дата: 17.03.21 14:13
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Компутер, наверное, хавно


Да, говорят, на Duron-ах бывают тормоза, но это не баг, а "особенность реализации".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.