Есть сборка с тестами (NUnit) в количестве 18.5 тыщ.
Отдельные тесты запускаются достаточно бодро.
А вот когда говоришь (в Test Explorer) "Run All" — студия сначала около 8 восьми минут очень долго тупит (в testhost.exe), а потом начинает их выполнять.
C XUnit (если я правильно помню название) аналогичная фигня.
Это можно как-то починить/устранить?
Я так понимаю, студия сначала строит список тестов, а потом начинает их выполнять.
Непонятно, какого она не делает это параллельно?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Непонятно, какого она не делает это параллельно?
Непонятно: какого она это делает как черепаха. Проблемы, имхо, у нее начинаются уже при 100+ тестах, при этом само исполнение тестов летает.
Как идеи:
(1) Тесты обычные или это тест на основе данных (Theory в xunit), и если с данными — откуда они берутся (аттрибуты vs внешний источник)? Нет ли собственных типов данных используемых как параметры в таких тестах? (Они требуют правильной сериализации, т.к. в итоге становятся ключом для исполнения. + там была какая-то особенность в mstest на эту тему, которая мешать жить, но вроде воркэраундилось)
(2) Студия вроде бы результаты тестов складывала в отдельную БД (где-то около проекта) — может пришло время ее почистить?
Re[2]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Mystic Artifact, Вы писали:
MA> (1) Тесты обычные или это тест на основе данных (Theory в xunit), и если с данными — откуда они берутся (аттрибуты vs внешний источник)? Нет ли собственных типов данных используемых как параметры в таких тестах? (Они требуют правильной сериализации, т.к. в итоге становятся ключом для исполнения. + там была какая-то особенность в mstest на эту тему, которая мешать жить, но вроде воркэраундилось)
У меня тесты тривиальные. Юзаю только атрибут [Test].
MA> (2) Студия вроде бы результаты тестов складывала в отдельную БД (где-то около проекта) — может пришло время ее почистить?
Хорошая мысль.
Обнаружил каталог v16\TestStore\OutputMessages
Сколько там подкаталогов/файлов — определить не получается
Раздел на HDD (даром что RAID10) — тормозит нещадно.
Тотал и WinExplorer до 150 тыщ файлов досчитали и я их прервал.
Попробую грохнуть этот каталог из командной строки
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Тотал и WinExplorer до 150 тыщ файлов досчитали и я их прервал. КД>Попробую грохнуть этот каталог из командной строки
Можешь и %temp% заодно почистить, наверняка там горы мусора.
Re[4]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Mystic Artifact, Вы писали: КД>>Тотал и WinExplorer до 150 тыщ файлов досчитали и я их прервал. КД>>Попробую грохнуть этот каталог из командной строки MA> Можешь и %temp% заодно почистить, наверняка там горы мусора.
Тотал таки смог открыть этот каталог.
там 2.7 млн элементов (подкаталогов?)
Капец. Дайте мне яду.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[5]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, RonWilson, Вы писали:
MA>> Можешь и %temp% заодно почистить, наверняка там горы мусора. RW>Вредное советуете — обычно там люди документы и дистрибы хранят
Я предлагаю только поразиться числу каталогов, файлов и логов которые писать никто не просил.
Re[6]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Mystic Artifact, Вы писали:
MA>Здравствуйте, RonWilson, Вы писали:
MA>>> Можешь и %temp% заодно почистить, наверняка там горы мусора. RW>>Вредное советуете — обычно там люди документы и дистрибы хранят MA> Я предлагаю только поразиться числу каталогов, файлов и логов которые писать никто не просил.
посмотрел в этот каталог, который находится в скрытом, а значит не для вас нечего там лазить
Re[7]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, RonWilson, Вы писали:
RW>посмотрел в этот каталог, который находится в скрытом, а значит не для вас нечего там лазить
Ну правильно, есть штатный Disk Cleanup который подтирает еще и в других местах. Вполне юзабельно, если не забывать, что он вообще есть.
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Mystic Artifact, Вы писали:
MA>Здравствуйте, RonWilson, Вы писали:
RW>>посмотрел в этот каталог, который находится в скрытом, а значит не для вас нечего там лазить MA> Ну правильно, есть штатный Disk Cleanup который подтирает еще и в других местах. Вполне юзабельно, если не забывать, что он вообще есть.
что-то сомневаюсь, что он трет эти каталоги, он трет хотя бы Windows Update бэкапы и то спасибо (не спасибо! на серверных ОС — как это там работает — это еще надо постараться — 99% за пару минут и ~1% — ночь и до обеда после серьезных куммулятивных обновлениях).
Re[5]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Но эта зачистка никак не повлияла на время подготовки запуска "Run All" — 20 (ДВАДЦАТЬ, КАРЛ!) минут. Специально замерил. КД>Теперь надо как-то с этим жить.
Можно попробовать повыполнять тесты через родной NUnit раннер, посмотреть как быстро он делает хотя бы discovery, хотя я почему-то думаю, что там проблем нет (ну и общее выполнение оценить).
А так же, попробовать выполнить через "dotnet test" (mstest), который играет роль универсального ущербного интерфейса-адаптера над остальными тест-раннерами.
Ну, если упороться совсем — нагенерировать классов / тестов пустых, создать похожий проект, и поглядеть повторяется ли проблема на других машинах или у других пользователей.
А жить с этим просто — пользоваться их эксплорером ограниченно или не пользоваться вовсе. Например, пользоваться для запуска одного единственного теста (для дебага), если он с этим справляется. А остальное запускать "нормальным" раннером (если из них окажется работает быстрее).
PS: Где-то пол года назад, то, как он шевелится — мне перестало нравится буквально на 300-500 тестах, в добавок куча сборок с тестами, и абсолютно неудобный этот самый тест эксплорер. Т.к. половина из этих тестов мне не нужна была постоянно, сделал .slnf (solution filter), изъял оттуда лишние сборки с тестами, что б оно не маячило и не мешкалось.
Здравствуйте, Mystic Artifact, Вы писали:
КД>>Но эта зачистка никак не повлияла на время подготовки запуска "Run All" — 20 (ДВАДЦАТЬ, КАРЛ!) минут. Специально замерил. КД>>Теперь надо как-то с этим жить. MA> Можно попробовать повыполнять тесты через родной NUnit раннер, посмотреть как быстро он делает хотя бы discovery, хотя я почему-то думаю, что там проблем нет (ну и общее выполнение оценить).
Блин, у NUnit 2.x была отличная простенькая гуя для запуска тестов. Но они, походу, её похерили
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, RonWilson, Вы писали:
RW>Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>>Блин, у NUnit 2.x была отличная простенькая гуя для запуска тестов. Но они, походу, её похерили
RW>я когда разобрался как теперь запускать из командной строки, то молча пошел пить кофе
ну не так все печально, но почему-то вызывает отвращение
dotnet test Microsoft.Word.csproj --filter JustLaunchThis
Здравствуйте, 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)
Здравствуйте, IT, Вы писали:
КД>>Есть сборка с тестами (NUnit) в количестве 18.5 тыщ.
IT>Что-то рановато. В linq2db тормоза начинаются только после ~30k тестов.
Компутер, наверное, хавно
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
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)
Здравствуйте, Коваленко Дмитрий, Вы писали: КД>Есть сборка с тестами (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.
Я так понимаю, каждый из 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) сравнивается имя теста с элементом фильтра.
Здравствуйте, Mystic Artifact, Вы писали:
MA>Вопрос, что за адский стэк, это что? рекурсия?
Данные из строчек nunit.framework.dll!NUnit.Framework.Internal.TestSuite.TestSuite(NUnit.Framework.Internal.TestSuite suite, NUnit.Framework.Interfaces.ITestFilter filter) Line 121
Здравствуйте, Mystic Artifact, Вы писали:
MA> PS: Где-то пол года назад, то, как он шевелится — мне перестало нравится буквально на 300-500 тестах, в добавок куча сборок с тестами, и абсолютно неудобный этот самый тест эксплорер. Т.к. половина из этих тестов мне не нужна была постоянно, сделал .slnf (solution filter), изъял оттуда лишние сборки с тестами, что б оно не маячило и не мешкалось.
Я тут решил таки попробовать разобраться как можно порешать эту адскую проблему с прямолинейной фильтрацией.
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Если для тебя это актуально можешь попробовать со своими тестами.
Я использовал xunit, поэтому не особо актуально, и исходя из всего увиденного, думаю, в моём случае там какие-то другие проблемы были или оно просто быстрее шевелиться не умеет.
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Mystic Artifact, Вы писали:
MA>Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>>Если для тебя это актуально можешь попробовать со своими тестами. MA> Я использовал xunit, поэтому не особо актуально, и исходя из всего увиденного, думаю, в моём случае там какие-то другие проблемы были или оно просто быстрее шевелиться не умеет.
xunit можно параллельно запускать
Кодом людям нужно помогать!
Re[10]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, 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)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Поскольку грохнуть TestStore в обозромое время не получилось, я его переименовал и запустил удаление из командной строки.
Переименовывать работает хитро, система сохраняет связи. Судя по специфике "%temp%" надо именно удалить, а потом ещё и перезагружаться, чтобы окончательно избавиться от мусора.
Здравствуйте, IT, Вы писали:
КД>>Есть сборка с тестами (NUnit) в количестве 18.5 тыщ.
IT>Что-то рановато. В linq2db тормоза начинаются только после ~30k тестов.
После 50 тысяч тестов (у меня их уже наплодилось больше 57) 2019-я начала очень сильно глючить.
Её буквально хватает на пару запусков небольшой группы тестов.
Потом она перестает их выполнять (подумает, подумает и ничего не делает) и её надо перезапускать, не забывая грохать каталог "v16\TestStore".
Тесты тривиальные, без всяких извращений. Тупо куча методов с атрибутом [Test].
Если прогнать все тесты, то потом crash студии это вопрос пары телодвижений в редакторе.
В последний раз я посмотрел сколько она отожрала памяти — больше 3.5GB.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>В ветке v3.13-dev лежит исправление (в мастер тоже закоммитили).
КД>Запуск всех тестов (у меня их уже 29+ тысяч) стартует очень бодро.
Здравствуйте, Danchik, Вы писали:
КД>>В ветке v3.13-dev лежит исправление (в мастер тоже закоммитили).
КД>>Запуск всех тестов (у меня их уже 29+ тысяч) стартует очень бодро.
D>Поточнее можно? Ссылку на PR например.
Здравствуйте, Sharov, Вы писали:
S>Вроде самая новая студия уже 64 бита. Такое кол-во тестов лучше бы из консоли запускать.
Может быть лучше бы исправить / переделать Test Explorer? Он долговато думает даже на крошечных 100-500 тестах, тоже без особых извращений.
Re[5]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Mystic Artifact, Вы писали:
S>>Вроде самая новая студия уже 64 бита. Такое кол-во тестов лучше бы из консоли запускать. MA> Может быть лучше бы исправить / переделать Test Explorer? Он долговато думает даже на крошечных 100-500 тестах, тоже без особых извращений.
Возможно для исправления надо студию переписать Кто же знает как они взаимодействует, судя по всему что падает
по памяти, там куча аллокаций всяческих идет, поэтому либо x64, либо что-то другое\свое.
УПД: И опять же, test explorer -- это tv, блин сколько он будет жрать для 50000 элементов?
Еще раз повторюсь -- такое кол-во тестов не для UI.
Здравствуйте, 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
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Такое ощущение там где-то внутри линейный поиск по общем списку тестов, причем этот список грузится с Луны флоппика.
КД>UPD1. Это тупит ServiceHub.RoslynCodeAnalysisService.exe
А может просто взаимодействовать через trx файлы? В студии открывать результат прогона тестов, точнее только упавших.
Кодом людям нужно помогать!
Re[8]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Sharov, Вы писали:
КД>>Такое ощущение там где-то внутри линейный поиск по общем списку тестов, причем этот список грузится с Луны флоппика.
КД>>UPD1. Это тупит ServiceHub.RoslynCodeAnalysisService.exe
S>А может просто взаимодействовать через trx файлы? В студии открывать результат прогона тестов, точнее только упавших.
Вы можете записать короткое видео в котором продемонстрируется "легкость и удобство" запуска нужной группы тестов через консоль и последующую обработку результатов?
Это я без шуток спрашиваю.
---
Я пока решил смириться с текущими траблами.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[9]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Коваленко Дмитрий, Вы писали:
S>>А может просто взаимодействовать через trx файлы? В студии открывать результат прогона тестов, точнее только упавших. КД>Вы можете записать короткое видео в котором продемонстрируется "легкость и удобство" запуска нужной группы тестов через консоль и последующую обработку результатов? КД>Это я без шуток спрашиваю.
Не смогу, но вот один указанный тест прогнать возможно, проверял недавно. Возможно где-то поставить * вместо класса
и гонять группу. Тут надо гуглить или курить msdn. Либо что-то самописное, когда всем, кроме некоторых,
тестов прописывать атрибут Ignore, и прогонять остальные.
Т.е. мне кажется, что для такого кол-во тестов студия, т.е. ручное управление, не очень рассчитано.
Тут нужны уже какие-то спец. инструменты. Хотя могу и ошибаться, ибо писал и имел дело с тестами на
порядки 1000\100 меньшего объема, и соотв. проблем не было.
Кодом людям нужно помогать!
Re[10]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Sharov, Вы писали:
S>Не смогу, но вот один указанный тест прогнать возможно, проверял недавно. Возможно где-то поставить * вместо класса S>и гонять группу. Тут надо гуглить или курить msdn. Либо что-то самописное, когда всем, кроме некоторых, S>тестов прописывать атрибут Ignore, и прогонять остальные.
S>Т.е. мне кажется, что для такого кол-во тестов студия, т.е. ручное управление, не очень рассчитано. S>Тут нужны уже какие-то спец. инструменты. Хотя могу и ошибаться, ибо писал и имел дело с тестами на S>порядки 1000\100 меньшего объема, и соотв. проблем не было.
У моего другого проекта на плюсах (он тут работает внизу) около 8 млн. тестов (генерируются).
Тестовая система самописная.
Там да, я их через консоль гоняю.
Потому что безальтернативно.
А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[11]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер
А в чем проблема прогнать тесты в консоли и открыть trx файл в студии? Это же можно автоматизировать.
Кодом людям нужно помогать!
Re[12]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Sharov, Вы писали:
КД>>А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер
S>А в чем проблема прогнать тесты в консоли и открыть trx файл в студии? Это же можно автоматизировать.
Проблема в подаче информации.
Вот ты пишешь "консоль, trx" и ожидается лютый ужос, который уже задрал
Правда после повторного запуска тестов этот список не перезагружается.
Надо погуглить — наверняка это уже кто-то решил.
Спасибо!
UPD1. Кстати, у твоего сообщения номер прикольный — 8008008
UPD2. Обнаружил еще один бонус. Через TRX нормально отображаются сообщения (об ошибках) на русском. В Test Explorer — кракозяблы вопросительные знаки. Это они недавно сломали.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Sharov, Вы писали: КД>>А с C#-ом как-то подсел на NUnit с его тогдашней консолью (v2.6) ну и вообщем все — хочу уже как белый человек, а не как шахтер S>А в чем проблема прогнать тесты в консоли и открыть trx файл в студии? Это же можно автоматизировать.
Я закрепил TRX-файл в списке файлов студии на панели задач. Так что теперь он открывается в два клика. Причем в текущей запущенной студии. Вообще отлично.
Обнаружил что "Test Results" сохраняет предыдущие данные, не смотря на то, что сам файл перезатерся.
Наверное пригодится
Закрыл "Test Explorer" и освободил 1/6 часть монитора
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[13]: VS2019. Тупёж при запуске всех тестов (NUnit)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>А оказывается все не так страшно:
КД>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)
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>>А оказывается все не так страшно: КД>84 тыщи тестов. При прогоне всех тестов, TRX-файл перестал создаваться. КД>Когда было 75 тыщ — создавался (0.5GB). КД>Если добавить ограничивающий фильтр — создается.
Может имеет смысл бить на сборки(несколько файлов trx)?
КД>ILSpy про vstest.console.exe (нашел их пару штук) говорит "Architecture: AnyCPU (32-bit preferred)" КД>Диспетчер задач говорит, что vstest.console.exe работает в 32-битном процессе. КД>Не подскажите — а как мне этот vstest.console.exe запустить в 64-битном процессе? Может это поможет
Здравствуйте, 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 памяти и завершается.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --