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-ах бывают тормоза, но это не баг, а "особенность реализации".
Re[11]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 14:15
Оценка:
Здравствуйте, RonWilson, Вы писали:

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


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


Дык, приперли к стенке, гады.

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


dotnet test?

Вернул все назад (NUnit+NUnit3TestAdapter)

  Запустил
d:\Users\Dima\Work2\Projects\EFCore_LcpiOleDb_v2\tests\general>dotnet test ef_core.provider.lcpi_oledb.tests.general.vs2019-n5_0_0.csproj

Вас приветствует .NET 5.0!
---------------------
Версия пакета SDK: 5.0.201

Телеметрия
---------
Средства .NET собирают данные об использовании для повышения удобства. Данные собираются корпорацией Майкрософт и предоставляются сообществу. Вы можете отключить отправку данных телеметрии, установив
значение "1" или "true" для переменной среды DOTNET_CLI_TELEMETRY_OPTOUT в подходящей оболочке.

Дополнительные сведения о сборе данных телеметрии средствами CLI .NET см. на странице https://aka.ms/dotnet-cli-telemetry.

----------------
Установлен сертификат разработки HTTPS в ASP.NET Core.
Чтобы сделать сертификат доверенным, выполните команду "dotnet dev-certs https --trust" (только в Windows и macOS).
Дополнительные сведения об HTTPS: https://aka.ms/dotnet-https
----------------
Как написать свое первое приложение: https://aka.ms/dotnet-hello-world
Узнать о новых возможностях: https://aka.ms/dotnet-whats-new
Просмотреть документацию: https://aka.ms/dotnet-docs
Сообщить о проблемах и найти исходный код на GitHub: https://github.com/dotnet/core
Для просмотра доступных команд введите команду "dotnet --help" или посетите следующую страницу: https://aka.ms/dotnet-cli.
--------------------------------------------------------------------------------------
  Определение проектов для восстановления...
  Восстановлен d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\src\EFCore.Relational\EFCore.Relational.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\src\EFCore.Abstractions\EFCore.Abstractions.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\src\EFCore\EFCore.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\Work2\.NET\lib.net\lib\lcpi.lib.vs2017-s2_0.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\src\EFCore.Analyzers\EFCore.Analyzers.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\Work2\Projects\EFCore_LcpiOleDb_v2\code\ef_core.provider.lcpi_oledb.vs2019-n5_0_0.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\Work2\.NET\data.oledb.net\provider\lcpi.data.oledb.vs2017-s2_0.csproj (за 250 ms).
  Восстановлен d:\Users\Dima\Work2\Projects\EFCore_LcpiOleDb_v2\tests\general\ef_core.provider.lcpi_oledb.tests.general.vs2019-n5_0_0.csproj (за 362 ms).
C:\Program Files\dotnet\sdk\5.0.201\Microsoft.Common.CurrentVersion.targets(2182,5): warning MSB3088: не удалось прочитать файл состояния "d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\art
ifacts\obj\EFCore.Analyzers\Debug\netstandard2.0\EFCore.Analyzers.csprojAssemblyReference.cache". End of Stream encountered before parsing was completed. [d:\Users\Dima\GitHUB2\aspnet-my2\EntityFramew
orkCore\work\src\EFCore.Analyzers\EFCore.Analyzers.csproj]
  EFCore.Analyzers -> d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\artifacts\bin\EFCore.Analyzers\Debug\netstandard2.0\Microsoft.EntityFrameworkCore.Analyzers.dll
  EFCore.Abstractions -> d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\artifacts\bin\EFCore.Abstractions\Debug\net5.0\Microsoft.EntityFrameworkCore.Abstractions.dll
  lcpi.lib.vs2017-s2_0 -> d:\Users\Dima\Work2\.NET\lib.net\lib\bin\vs2017_nets2.0_Debug\lcpi.lib.nets2_0.debug.dll
  lcpi.data.oledb.vs2017-s2_0 -> d:\Users\Dima\Work2\.NET\data.oledb.net\provider\bin\vs2017_nets2.0_Debug\lcpi.data.oledb.nets2_0.debug.dll
  EFCore -> d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\artifacts\bin\EFCore\Debug\net5.0\Microsoft.EntityFrameworkCore.dll
  EFCore.Relational -> d:\Users\Dima\GitHUB2\aspnet-my2\EntityFrameworkCore\work\artifacts\bin\EFCore.Relational\Debug\net5.0\Microsoft.EntityFrameworkCore.Relational.dll
  ef_core.provider.lcpi_oledb.vs2019-n5_0_0 -> d:\Users\Dima\Work2\Projects\EFCore_LcpiOleDb_v2\code\bin\vs2019-net50.0-Debug\Lcpi.EntityFrameworkCore.DataProvider.LcpiOleDb-net5_0_0.debug.dll
  ef_core.provider.lcpi_oledb.tests.general.vs2019-n5_0_0 -> d:\Users\Dima\Work2\Projects\EFCore_LcpiOleDb_v2\tests\general\bin\vs2019-net50.0-Debug\Lcpi.EntityFrameworkCore.DataProvider.LcpiOleDb.Tes
ts.General-net5_0_0.debug.dll
Тестовый запуск для 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 (.NETCoreAp
p,Version=v5.0)
Программа Microsoft (R) Test Execution Command Line Tool версии 16.9.1
(с) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

Запуск выполнения тестов; подождите...
Общее количество тестовых файлов (1), соответствующих указанному шаблону.

Уже пятую минуту думает....

...Пойду выполню супружеский долг

О!

Пройден! : не пройдено 0, пройдено 18543, пропущено 0, всего 18543, длительность 7 m 33 s. — Lcpi.EntityFrameworkCore.DataProvider.LcpiOleDb.Tests.General-net5_0_0.debug.dll (net5.0)


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

КД>Теперь надо как-то к этому приноровиться.


Могу только сказать что больше подходит к этому: картофельное пюре с котлетами, хлеб с хренодером и тогда вроде не так бомбит от всего этого
Re: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 16:58
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

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


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


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


Подключился отладчиком к testhost.exe. Символы подгрузились без проблем.

  Стек
     System.Linq.dll!System.Linq.Enumerable.Any<NUnit.Framework.Internal.TestFilter>(System.Collections.Generic.IEnumerable<NUnit.Framework.Internal.TestFilter> source, System.Func<NUnit.Framework.Internal.TestFilter, bool> predicate) Line 59    C#    Symbols loaded.
>    nunit.framework.dll!NUnit.Framework.Internal.Filters.OrFilter.Pass(NUnit.Framework.Interfaces.ITest test, bool negated) Line 59    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestFilter.Pass(NUnit.Framework.Interfaces.ITest test) Line 68    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 117    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestAssembly.TestAssembly(NUnit.Framework.Internal.TestAssembly assembly, NUnit.Framework.Interfaces.ITestFilter filter) Line 70    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Api.NUnitTestAssemblyRunner.ExploreTests(NUnit.Framework.Interfaces.ITestFilter filter) Line 200    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Api.FrameworkController.ExploreTests(string filter) Line 212    C#    Symbols loaded.

OnFilter.Pass

        public override bool Pass( ITest test, bool negated )
        {
            if (negated)
                return Filters.All(f => f.Pass(test, negated));

            return Filters.Any(f => f.Pass(test, negated));
        }


В коллекции Filters 18543 элемента. Это все мои тесты
Автор: Коваленко Дмитрий
Дата: 17.03.21
.

Я так понимаю, каждый из 18543 тестов линейным поиском проверяется на наличие в списке из 18543 элементов.

Можно копнуть поглубже — посмотреть как работает f.Pass(test, negated)

  Стек
>    nunit.framework.dll!NUnit.Framework.Internal.Filters.ValueMatchFilter.Match(string input) Line 66    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.Filters.FullNameFilter.Match(NUnit.Framework.Interfaces.ITest test) Line 45    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestFilter.Pass(NUnit.Framework.Interfaces.ITest test, bool negated) Line 86    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.Filters.OrFilter.Pass.AnonymousMethod__1(NUnit.Framework.Internal.TestFilter f) Line 59    C#    Symbols loaded.
     System.Linq.dll!System.Linq.Enumerable.Any<NUnit.Framework.Internal.TestFilter>(System.Collections.Generic.IEnumerable<NUnit.Framework.Internal.TestFilter> source, System.Func<NUnit.Framework.Internal.TestFilter, bool> predicate) Line 61    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.Filters.OrFilter.Pass(NUnit.Framework.Interfaces.ITest test, bool negated) Line 59    C#    Symbols loaded.

        /// <summary>
        /// Match the input provided by the derived class
        /// </summary>
        /// <param name="input">The value to be matched</param>
        /// <returns>True for a match, false otherwise.</returns>
        protected bool Match(string input)
        {
            if (IsRegex)
                return input != null && new Regex(ExpectedValue).IsMatch(input);
            else
                return ExpectedValue == input; // <------------- здесь.
        }


Как раз здесь (ExpectedValue == input) сравнивается имя теста с элементом фильтра.

UPD. Нашел у них (разрабов NUnit) свежий тикет по этому поводу — NUnit with dotnet test results in O(n^2) filtering complexity
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Отредактировано 17.03.2021 19:17 DDDX . Предыдущая версия . Еще …
Отредактировано 17.03.2021 16:58 DDDX . Предыдущая версия .
Re[2]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 17.03.21 17:24
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

Вопрос, что за адский стэк, это что? рекурсия?

  Скрытый текст
nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 117    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.Copy(NUnit.Framework.Interfaces.ITestFilter filter) Line 189    C#    Symbols loaded.
     nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121    C#    Symbols loaded.
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 17.03.21 17:31
Оценка: 21 (1)
Здравствуйте, Mystic Artifact, Вы писали:

MA>Вопрос, что за адский стэк, это что? рекурсия?


Данные из строчек
nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121

EFCore_LcpiOleDb_Tests.General.Work.DBMS.Firebird.V03_0_0.D3.Query.CastAs.SET_001.String.Int16.TestSet__001__field
EFCore_LcpiOleDb_Tests.General.Work.DBMS.Firebird.V03_0_0.D3.Query.CastAs.SET_001.String.Int16
EFCore_LcpiOleDb_Tests.General.Work.DBMS.Firebird.V03_0_0.D3.Query.CastAs.SET_001.String
....
EFCore_LcpiOleDb_Tests


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

Спасибо. Ужастики какие-то конечно.
Re[7]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 18.03.21 17:16
Оценка: 18 (1)
Здравствуйте, Mystic Artifact, Вы писали:

MA> PS: Где-то пол года назад, то, как он шевелится — мне перестало нравится буквально на 300-500 тестах, в добавок куча сборок с тестами, и абсолютно неудобный этот самый тест эксплорер. Т.к. половина из этих тестов мне не нужна была постоянно, сделал .slnf (solution filter), изъял оттуда лишние сборки с тестами, что б оно не маячило и не мешкалось.


Я тут решил таки попробовать разобраться как можно порешать эту адскую проблему с прямолинейной фильтрацией.

Проба пера

Ветка: D20210318--Optimization

У меня оно начало относительно бодро стартовать выполнение всех моих тестов . Если сравнивать с тем, что было.

Точно не замерял — около двух минут.

---
Если для тебя это актуально можешь попробовать со своими тестами.

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

КД>Если для тебя это актуально можешь попробовать со своими тестами.

Я использовал xunit, поэтому не особо актуально, и исходя из всего увиденного, думаю, в моём случае там какие-то другие проблемы были или оно просто быстрее шевелиться не умеет.
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 19.03.21 12:27
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

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


У R# есть своя UI для тестов. Ей и пользуюсь.
Кодом людям нужно помогать!
Re[9]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 19.03.21 12:32
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

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


КД>>Если для тебя это актуально можешь попробовать со своими тестами.

MA> Я использовал xunit, поэтому не особо актуально, и исходя из всего увиденного, думаю, в моём случае там какие-то другие проблемы были или оно просто быстрее шевелиться не умеет.

xunit можно параллельно запускать
Кодом людям нужно помогать!
Re[10]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 19.03.21 12:59
Оценка:
Здравствуйте, Sharov, Вы писали:

MA>> Я использовал xunit, поэтому не особо актуально, и исходя из всего увиденного, думаю, в моём случае там какие-то другие проблемы были или оно просто быстрее шевелиться не умеет.

S>xunit можно параллельно запускать

Проблема не в xunit, а в том, как весь этот френкенштейн работает (иногда тупит просто ни с чего, не делая при том никакой нагрузки). Это всё приблизительно в ту же тему, как и строго после 00:00 часов, ну допустим, в 00:10 билд система хочет всё пересобрать, хотя изменений никаких нет (зачем, почему?). Или иногда по стечению каких-то факторов msbuild в студии не хочет пихать артефакты в bin, что бы ты не делал (Clean/Build/Rebuild), пока её не перезапустишь. В тему этого же топика — постоянно неконтроллируемо распухающий кэш нюгет пакетов — уверен у многих разработчиков он не такой большой, но если используешь пакеты по 100мб — то размер станет приличным. С xunit/интеграцией — досадный недостаток, мне нужен специфичный TestCaseOrderer, и я хочу, что бы он лежал не в самой сборке с тестами, а в сборке-библиотеке, как и генератор тестовых данных там же (а потому, IXunitSerializable там тоже используется). Эта библиотека — референсит xunit.core и вся эта богодельня, не смотря на то, что ей явно указывается IsTestProject=false — видит эту сборку как сборку с тестами (студия не видит, а dotnet test — видит, — или наоборот, не помню уже, это мелочь но она же ведь есть, и она меня лично раздражает). Хотя в целом, по тулчейну — стало явно получше, в плане, что всё что нужно — есть в коробке.

PS: В сущности, я много лет использую домашний маленький кривенький фреймворк, что мне не нужно наступать на эти грабли каждый раз, а сами тесты представляют собой просто исполнимый файл (мне лично это как раз гораздо больше подходит, и не надо прорываться через какие-либо дебри). Вот пришла пора взяться и переделать его в очередной раз, но всё руки не доходят.
Re[6]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: akasoft Россия  
Дата: 22.03.21 11:40
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

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

Переименовывать работает хитро, система сохраняет связи. Судя по специфике "%temp%" надо именно удалить, а потом ещё и перезагружаться, чтобы окончательно избавиться от мусора.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Починили
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 20.04.21 18:45
Оценка: 24 (2)
В ветке v3.13-dev лежит исправление (в мастер тоже закоммитили).

Запуск всех тестов (у меня их уже 29+ тысяч) стартует очень бодро.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 11.05.21 18:02
Оценка:
Здравствуйте, IT, Вы писали:

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


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


После 50 тысяч тестов (у меня их уже наплодилось больше 57) 2019-я начала очень сильно глючить.

Её буквально хватает на пару запусков небольшой группы тестов.

Потом она перестает их выполнять (подумает, подумает и ничего не делает) и её надо перезапускать, не забывая грохать каталог "v16\TestStore".

Тесты тривиальные, без всяких извращений. Тупо куча методов с атрибутом [Test].

Если прогнать все тесты, то потом crash студии это вопрос пары телодвижений в редакторе.

В последний раз я посмотрел сколько она отожрала памяти — больше 3.5GB.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 12.05.21 09:41
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>В последний раз я посмотрел сколько она отожрала памяти — больше 3.5GB.


Вроде самая новая студия уже 64 бита. Такое кол-во тестов лучше бы из консоли запускать.
Кодом людям нужно помогать!
Re[2]: Починили
От: Danchik Украина  
Дата: 12.05.21 12:21
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>В ветке v3.13-dev лежит исправление (в мастер тоже закоммитили).


КД>Запуск всех тестов (у меня их уже 29+ тысяч) стартует очень бодро.


Поточнее можно? Ссылку на PR например.
Re[3]: Починили
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 12.05.21 13:08
Оценка: 18 (1)
Здравствуйте, Danchik, Вы писали:

КД>>В ветке v3.13-dev лежит исправление (в мастер тоже закоммитили).


КД>>Запуск всех тестов (у меня их уже 29+ тысяч) стартует очень бодро.


D>Поточнее можно? Ссылку на PR например.


Тикет по этому поводу — NUnit with dotnet test results in O(n^2) filtering complexity

https://github.com/nunit/nunit/pull/3828

Версия с исправлением — NUnit 3.13.2.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[4]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Mystic Artifact  
Дата: 12.05.21 17:47
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Вроде самая новая студия уже 64 бита. Такое кол-во тестов лучше бы из консоли запускать.

Может быть лучше бы исправить / переделать Test Explorer? Он долговато думает даже на крошечных 100-500 тестах, тоже без особых извращений.
Re[5]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 12.05.21 17:54
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

S>>Вроде самая новая студия уже 64 бита. Такое кол-во тестов лучше бы из консоли запускать.

MA> Может быть лучше бы исправить / переделать Test Explorer? Он долговато думает даже на крошечных 100-500 тестах, тоже без особых извращений.

Возможно для исправления надо студию переписать Кто же знает как они взаимодействует, судя по всему что падает
по памяти, там куча аллокаций всяческих идет, поэтому либо x64, либо что-то другое\свое.

УПД: И опять же, test explorer -- это tv, блин сколько он будет жрать для 50000 элементов?
Еще раз повторюсь -- такое кол-во тестов не для UI.
Кодом людям нужно помогать!
Отредактировано 12.05.2021 17:56 Sharov . Предыдущая версия .
Re[6]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.05.21 07:06
Оценка:
Здравствуйте, Sharov, Вы писали:

S>>>Вроде самая новая студия уже 64 бита. Такое кол-во тестов лучше бы из консоли запускать.

MA>> Может быть лучше бы исправить / переделать Test Explorer? Он долговато думает даже на крошечных 100-500 тестах, тоже без особых извращений.

S>Возможно для исправления надо студию переписать Кто же знает как они взаимодействует, судя по всему что падает

S>по памяти, там куча аллокаций всяческих идет, поэтому либо x64, либо что-то другое\свое.

S>УПД: И опять же, test explorer -- это tv, блин сколько он будет жрать для 50000 элементов?

S>Еще раз повторюсь -- такое кол-во тестов не для UI.

Для запуска тестов я использую Solution Explorer.

Потому что в Test Explorer реально нихрена ничего найти нельзя из за длинного и детализированного пространства имен.

  Осторожно, большая картинка.

От "Test Explorer" требуется только быстрый переход на проблемные тесты. И с этим у него (тоже) очень сильные проблемы.

То есть, ты выбираешь сбойный тест, а студия может до минуты думать перед тем как показать текст ошибки и перейти на исходный текст этого теста.

Причем от количества сбойных тестов это не зависит.

Такое ощущение там где-то внутри линейный поиск по общем списку тестов, причем этот список грузится с Луны флоппика.

UPD1. Это тупит ServiceHub.RoslynCodeAnalysisService.exe
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Отредактировано 13.05.2021 7:32 DDDX . Предыдущая версия .
Re[7]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 13.05.21 08:39
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Такое ощущение там где-то внутри линейный поиск по общем списку тестов, причем этот список грузится с Луны флоппика.


КД>UPD1. Это тупит ServiceHub.RoslynCodeAnalysisService.exe


А может просто взаимодействовать через trx файлы? В студии открывать результат прогона тестов, точнее только упавших.
Кодом людям нужно помогать!
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.05.21 09:15
Оценка:
Здравствуйте, Sharov, Вы писали:

КД>>Такое ощущение там где-то внутри линейный поиск по общем списку тестов, причем этот список грузится с Луны флоппика.


КД>>UPD1. Это тупит ServiceHub.RoslynCodeAnalysisService.exe


S>А может просто взаимодействовать через trx файлы? В студии открывать результат прогона тестов, точнее только упавших.


Вы можете записать короткое видео в котором продемонстрируется "легкость и удобство" запуска нужной группы тестов через консоль и последующую обработку результатов?

Это я без шуток спрашиваю.

---
Я пока решил смириться с текущими траблами.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[9]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 13.05.21 10:07
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

S>>А может просто взаимодействовать через trx файлы? В студии открывать результат прогона тестов, точнее только упавших.

КД>Вы можете записать короткое видео в котором продемонстрируется "легкость и удобство" запуска нужной группы тестов через консоль и последующую обработку результатов?
КД>Это я без шуток спрашиваю.

Не смогу, но вот один указанный тест прогнать возможно, проверял недавно. Возможно где-то поставить * вместо класса
и гонять группу. Тут надо гуглить или курить msdn. Либо что-то самописное, когда всем, кроме некоторых,
тестов прописывать атрибут Ignore, и прогонять остальные.

Т.е. мне кажется, что для такого кол-во тестов студия, т.е. ручное управление, не очень рассчитано.
Тут нужны уже какие-то спец. инструменты. Хотя могу и ошибаться, ибо писал и имел дело с тестами на
порядки 1000\100 меньшего объема, и соотв. проблем не было.
Кодом людям нужно помогать!
Re[10]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.05.21 10:26
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Не смогу, но вот один указанный тест прогнать возможно, проверял недавно. Возможно где-то поставить * вместо класса

S>и гонять группу. Тут надо гуглить или курить msdn. Либо что-то самописное, когда всем, кроме некоторых,
S>тестов прописывать атрибут Ignore, и прогонять остальные.

S>Т.е. мне кажется, что для такого кол-во тестов студия, т.е. ручное управление, не очень рассчитано.

S>Тут нужны уже какие-то спец. инструменты. Хотя могу и ошибаться, ибо писал и имел дело с тестами на
S>порядки 1000\100 меньшего объема, и соотв. проблем не было.

У моего другого проекта на плюсах (он тут работает внизу) около 8 млн. тестов (генерируются).

Тестовая система самописная.

Там да, я их через консоль гоняю.

Потому что безальтернативно.

А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[11]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 13.05.21 10:33
Оценка: 21 (1)
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер


А в чем проблема прогнать тесты в консоли и открыть trx файл в студии? Это же можно автоматизировать.
Кодом людям нужно помогать!
Re[12]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.05.21 11:20
Оценка:
Здравствуйте, Sharov, Вы писали:

КД>>А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер


S>А в чем проблема прогнать тесты в консоли и открыть trx файл в студии? Это же можно автоматизировать.


Проблема в подаче информации.

Вот ты пишешь "консоль, trx" и ожидается лютый ужос, который уже задрал

А оказывается все не так страшно:

1. Назначаем проект с тестами запускаемым

2. Прописываем в настройках отладки

Executable:

c:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\TestPlatform\vstest.console.exe

Arguments:

Lcpi.EntityFrameworkCore.DataProvider.LcpiOleDb.Tests.General-net5_0_0.debug.dll /logger:trx;LogFileName=test.trx /TestCaseFilter:FullyQualifiedName~EFCore_LcpiOleDb_Tests.General.Work.DBMS.Firebird.V03_0_0.D3.Query.Operators.SET_001.GreaterThanOrEqual.Complete.DateTime.


Здесь я указал пространство имен с запускаемыми тестами.

3. Запускаем (F5).

4. Drag&Drop-ом перетаскиваем "bin\vs2019-net50.0-Debug\TestResults\test.trx"

5. Видим цивильно оформленные список с результатами запуска с поддержкой навигации по исходному коду.

Правда после повторного запуска тестов этот список не перезагружается.

Надо погуглить — наверняка это уже кто-то решил.

Спасибо!

UPD1. Кстати, у твоего сообщения номер прикольный — 8008008

UPD2. Обнаружил еще один бонус. Через TRX нормально отображаются сообщения (об ошибках) на русском. В Test Explorer — кракозяблы вопросительные знаки. Это они недавно сломали.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Отредактировано 13.05.2021 12:30 DDDX . Предыдущая версия . Еще …
Отредактировано 13.05.2021 12:03 DDDX . Предыдущая версия .
Re[12]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 13.05.21 14:03
Оценка:
Здравствуйте, Sharov, Вы писали:

КД>>А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер


S>А в чем проблема прогнать тесты в консоли и открыть trx файл в студии? Это же можно автоматизировать.


Я закрепил TRX-файл в списке файлов студии на панели задач. Так что теперь он открывается в два клика. Причем в текущей запущенной студии. Вообще отлично.

Обнаружил что "Test Results" сохраняет предыдущие данные, не смотря на то, что сам файл перезатерся.

  Наверное пригодится

Закрыл "Test Explorer" и освободил 1/6 часть монитора
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[13]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 21.05.21 07:38
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>А оказывается все не так страшно:


КД>1. Назначаем проект с тестами запускаемым


КД>2. Прописываем в настройках отладки


КД>Здесь я указал пространство имен с запускаемыми тестами.


КД>3. Запускаем (F5).


КД>4. Drag&Drop-ом перетаскиваем "bin\vs2019-net50.0-Debug\TestResults\test.trx"


84 тыщи тестов. При прогоне всех тестов, TRX-файл перестал создаваться.

Когда было 75 тыщ — создавался (0.5GB).

Если добавить ограничивающий фильтр — создается.

ILSpy про vstest.console.exe (нашел их пару штук) говорит "Architecture: AnyCPU (32-bit preferred)"

Диспетчер задач говорит, что vstest.console.exe работает в 32-битном процессе.

Не подскажите — а как мне этот vstest.console.exe запустить в 64-битном процессе? Может это поможет
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[14]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Sharov Россия  
Дата: 21.05.21 09:58
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

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


КД>>А оказывается все не так страшно:

КД>84 тыщи тестов. При прогоне всех тестов, TRX-файл перестал создаваться.
КД>Когда было 75 тыщ — создавался (0.5GB).
КД>Если добавить ограничивающий фильтр — создается.

Может имеет смысл бить на сборки(несколько файлов trx)?


КД>ILSpy про vstest.console.exe (нашел их пару штук) говорит "Architecture: AnyCPU (32-bit preferred)"

КД>Диспетчер задач говорит, что vstest.console.exe работает в 32-битном процессе.
КД>Не подскажите — а как мне этот vstest.console.exe запустить в 64-битном процессе? Может это поможет

https://stackoverflow.com/questions/43636579/how-to-run-vstest-console-exe-for-unit-test-64-bit-platform
Кодом людям нужно помогать!
Re[15]: VS2019. Тупёж при запуске всех тестов (NUnit)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 23.05.21 20:09
Оценка:
Здравствуйте, Sharov, Вы писали:

КД>>84 тыщи тестов. При прогоне всех тестов, TRX-файл перестал создаваться.

КД>>Если добавить ограничивающий фильтр — создается.

S>Может имеет смысл бить на сборки(несколько файлов trx)?


Смысл, конечно, есть.

КД>>ILSpy про vstest.console.exe (нашел их пару штук) говорит "Architecture: AnyCPU (32-bit preferred)"

КД>>Диспетчер задач говорит, что vstest.console.exe работает в 32-битном процессе.
КД>>Не подскажите — а как мне этот vstest.console.exe запустить в 64-битном процессе? Может это поможет

S>https://stackoverflow.com/questions/43636579/how-to-run-vstest-console-exe-for-unit-test-64-bit-platform


/Plaform:x64


Не помогло. Лог не создается.

vstest.console.exe продолжает выполняться в 32-битном процессе.

Тесты, да — в 64-битном testhost.exe. Но они и без этого ключа в 64-битном процессе выполнялись.

Лог, по ходу, создает vstest.console.exe. После завершения работы всех тестов этот процесс бодро выжирает память до ~3.3GB памяти и завершается.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.