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
-- Пользователи не приняли программу. Всех пришлось уничтожить. --