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 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.