VS2017 Live Unit Testing - только минус - не работает
TL; DR; Edit 6: Я сузил его и предоставил 5 шагов для воспроизведения проблемы/ошибки.
- Создайте консольное приложение VS2017 С# (.Net Full Framework)
- Добавить метод в Program.cs и сделать класс общедоступным:
public class Program
{
static void Main(string[] args)
{
}
public int Add(int a, int b)
{
return a + b;
}
}
}
- Щелкните правой кнопкой мыши метод
Add
и выберите "Создать" Unit Test:
![введите описание изображения здесь]()
- Используйте эти настройки для создания нового проекта Unit Test с тестом:
![введите описание изображения здесь]()
- Добавьте Unit Test
[TestMethod()]
public void AddTest()
{
Program p = new Program();
var r = p.Add(1, 2);
Assert.IsTrue(3 == r);
}
- Меню тестирования > Тестирование Live Unit > Пуск
- Контекстное меню
AddTest()
> Live Testing > Включить
Теперь измените символ Add + на -
Тестирование Live Unit работает, измените символ - на + и пройдет тест Live!!
Теперь добавьте ссылку на DLL Nuget (любой будет делать) - Live Unit Testing больше не работает! Или просто закройте Решение, откройте его и Live Unit Testing больше не работает!
Я установил проект MSUnitTest v2 и начал тестирование Live Unit. Я использую проект Web Api 2..Net(Full Framework v4.5.2).
Я вижу знаки Минуса везде, но не Тик или Кресты.
Я изменяю код так же, как в Live Unit Testing в видеоролике Visual Studio 2017, и часы появляются за минусом, но затем ничего...
![введите описание изображения здесь]()
Unit Test пройдет, когда я его отлажу:
![введите описание изображения здесь]()
Когда я наводил указатель мыши на синюю минус, сообщение "Covered by 0 Tests"
Я обнаружил, что вам нужен MSTest.TestAdapter и MSTest.TestFramework как https://developercommunity.visualstudio.com/content/problem/5520/live-unit-test-are-only-showing-minuses-using-micr.html, который я сделал, и ссылаюсь на V1.18:
- Microsoft.VisualStudio.TestPlatform.TestFramework
- Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions
Существует множество бета-тестеров, которые сообщили о той же проблеме:
https://developercommunity.visualstudio.com/content/problem/4510/live-unit-testing-doesnt-do-anything-1.html
https://developercommunity.visualstudio.com/content/problem/2737/live-unit-testing-doesnt-do-anything.html
https://developercommunity.visualstudio.com/content/problem/4376/live-unit-testing-doesnt-work.html
https://developercommunity.visualstudio.com/content/problem/2527/live-unit-testing-doesnt-work-for-projects-that-im.html
Все сообщения разрешены или не исправлены.
Этот qaru.site/info/157056/.... Я попробовал решение в комментариях, чтобы удалить Microsoft.VisualStudio.QualityTools.UnitTestFramework из Gac, когда я попытался удалить из C:\Windows\сборка. Мне было отказано в доступе и удалении с помощью командной строки разработчика:
GacUtil /u Microsoft.VisualStudio.QualityTools.UnitTestFramework
Результаты в:
Сборка: Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version = 10.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL Не удалось удалить: сборка требуется одним или несколькими приложениями
Может ли кто-нибудь помочь мне заставить Live Unit Testing работать?
Изменить 1:
В VS > Инструменты > Параметры > Тестирование Live Unit, я перешел в Verbose.
Посмотрев на выход, я увидел одно предупреждение:
[15: 48: 26.521 Verbose] - TestDriver - сообщение журнала TestDiscoverer: предупреждение - не удалось инициализировать систему конфигурации
Следуя нескольким ответам в this, я все еще не смог избавиться от "Не удалось инициализировать систему конфигурации" - не уверен, что это красно- селедка или нет, ее единственная подсказка, которую я нашел до сих пор...
Изменить 2:
Я запускал VS2017 в качестве администратора и избавился от "Не удалось инициализировать систему конфигурации". К сожалению, работающий как Admin не имеет никакого значения, он по-прежнему не работает, но не прерывается с любыми исключениями.
Вот подробный журнал. Интересно, что "Подготовка к запуску тестового обнаружения" выглядит так, как будто он нашел тест x86, который я включил.
Однако он явно не может обнаружить тест; "Обнаружено 0 тестов"
[16:52:55.110 Verbose] - Aggregator - Calculating the set of tests that cover 1 files
[16:52:55.110 Verbose] - Aggregator - [Workflow 4] Sending TestRequestEvent with 6 assemblies and 0 tests
[16:52:55.110 Verbose] - TestDriver - [Workflow 4] Received TestRequestEvent
[16:52:55.110 Verbose] - TestDriver - [Workflow 4] Preparing to start test discovery (X64: 0, X86: 1).
[16:52:55.110 Verbose] - TestDriver - [Workflow 4] Start discovering tests from group 0, which contains 1 assemblies.
[16:52:55.599 Verbose] - TestDriver - [Workflow 4] Finished discovering test from group 0.
[16:52:55.599 Verbose] - TestDriver - [Workflow 4] Discovered 0 tests from XYZ.API.ClientService\bin\Debug\XYZ.API.ClientService.dll, updating cached data.
[16:52:55.599 Verbose] - TestDriver - [Workflow 4] Notify Aggregator about completion of test run. (Passed: 0, Failed: 0, Run succeeded: True)
[16:52:55.599 Verbose] - Aggregator - [Workflow 4] Received TestResponseEvent (TestRunCompleted)
[16:52:55.599 Verbose] - Aggregator - [Workflow 4] Coverage data for 0 tests was received during this workflow
[16:52:55.600 Verbose] - BuildManager - Allow to send a single build event.
[16:52:55.599 Verbose] - Aggregator - Starting coverage aggregation cycle - work list has 3 methods
[16:52:55.599 Verbose] - Aggregator - Finished coverage aggregation cycle - work list had 3 methods of which 3 methods were defined in 2 open files
[16:52:55.600 Verbose] - BuildManager - Interrupting build queue -> no new assemblies.
[16:52:55.600 Verbose] - StatusMargin - Received file coverage result
[16:52:55.599 Verbose] - Aggregator - Sending FileCoverageResult for 'C:\XYZProjectCollection\XYZ\XYZ.API.ClientService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.ClientService\XYZ.API.MiscService.csproj'
[16:52:55.599 Verbose] - Aggregator - [Workflow 4] Sending TestRunCompletedEvent
Изменить 3:
Сегодня я просмотрел трассировки ProcessMonitor. Ничего особо не выделялось, я мог что-то пропустить, но я начинаю чувствовать, что это ошибка, а не проблема с конфигурацией.
Я работаю в действительно заблокированной среде, поэтому может быть, что что-то было заблокировано во время установки vs2017. Я знаю, что домен Unity3D не включен в белый список для загрузки. Хотя все основные компоненты Visual Studio Microsoft установлены. У меня заканчивается диагностическая стратегия устранения неполадок. Любые идеи очень приветствуются!
Изменить 4:
Сегодня утром я решил избавиться от DLL Microsoft.VisualStudio.QualityTools.UnitTestFramework
от GAC. Я сделал это после этих инструкций для преодоления отказа в доступе:
![введите описание изображения здесь]()
Это привело к нахождению одной из потенциальных причин. Я начал видеть ведение журнала тестирования блочного модуля:
[09:44:59.053 Verbose] - BuildManager - C:\Program Files x86\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3245,5): error MSB3491: Could not write lines to file "C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\CoreCompileInputs.cache". Access to the path 'C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\CoreCompileInputs.cache' is denied.
[09:44:59.053 Verbose] - BuildManager - C:\Program Files x86\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(4874,5): error MSB3491: Could not write lines to file "C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\XYZ.API.MiscService.csproj.FileListAbsolute.txt". Access to the path 'C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\XYZ.API.MiscService.csproj.FileListAbsolute.txt' is denied.
Я дал себе разрешение на все эти каталоги, просто чтобы исключить любые проблемы с разрешениями:
![введите описание изображения здесь]()
Это все еще не работает, однако кажется, что я становлюсь ближе, поскольку тесты Live Unit проводят немного дольше, чтобы не работать (т.е. часы, которые появляются поверх минуса, занимают больше времени для обработки).
Затем я снова попробовал ProcMon, и он показал несколько интересных журналов, но не курил.
Вот текущий подробный журнал:
[10:22:07.363 Info] - BuildManager - Build completed (succeeded).
[10:22:07.363 Verbose] - BuildManager - Interrupting build queue -> switching 'build' and 'test' directories.
[10:22:07.363 Verbose] - BuildManager - New 'test' directory: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\1\
[10:22:07.363 Verbose] - BuildManager - New 'build' directory: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\0\
[10:22:07.363 Verbose] - Aggregator - [Workflow 4] Received BuildEvent.
[10:22:07.363 Verbose] - Aggregator - assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Tests\bin\Debug\XYZ.API.Tests.dll
[10:22:07.363 Verbose] - Aggregator - assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.AccountClientService\bin\Debug\XYZ.API.AccountClientService.dll
[10:22:07.363 Verbose] - Aggregator - assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API\bin\XYZ.API.dll
[10:22:07.363 Verbose] - Aggregator - assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Helpers\bin\Debug\XYZ.API.Global.dll
[10:22:07.363 Verbose] - Aggregator - assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.MiscService\bin\Debug\XYZ.API.MiscService.dll
[10:22:07.363 Verbose] - Aggregator - file: 'C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj'
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Tests\bin\Debug\XYZ.API.Tests.dll with MVID c96c0f4b-b21e-47be-a71e-97ebf8a3d493 since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.AccountClientService\bin\Debug\XYZ.API.AccountClientService.dll with MVID 6772f896-04ab-4804-bb18-3ed2c7aeb9b9 since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API\bin\XYZ.API.dll with MVID 9c862440-c16a-4efe-8574-76e8c1453c4d since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Helpers\bin\Debug\XYZ.API.Global.dll with MVID a8899d5d-4730-46bf-b4f2-3c2b1b75b0b1 since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Removing MVID f337ca44-aae6-42ca-8df5-3776ff962372 for project C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj from the file span cache
[10:22:07.363 Verbose] - Aggregator - Adding MVID 8e944276-0eec-43f4-aff3-07e40f8611dc for project C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj to the file span cache
[10:22:07.363 Verbose] - Aggregator - Calculating the set of tests that cover 0 files
[10:22:07.363 Verbose] - Aggregator - Reading spans for assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.MiscService\bin\Debug\XYZ.API.MiscService.dll with MVID 8e944276-0eec-43f4-aff3-07e40f8611dc
[10:22:07.363 Verbose] - Aggregator - Adding 3 methods from 'C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj' to the coverage aggregation work list
[10:22:07.363 Verbose] - Aggregator - Calculating the set of tests that cover 1 files
[10:22:07.363 Verbose] - Aggregator - [Workflow 4] Sending TestRequestEvent with 5 assemblies and 0 tests
[10:22:07.363 Verbose] - TestDriver - [Workflow 4] Received TestRequestEvent
[10:22:07.363 Verbose] - TestDriver - [Workflow 4] Preparing to start test discovery (X64: 0, X86: 1).
[10:22:07.363 Verbose] - TestDriver - [Workflow 4] Start discovering tests from group 0, which contains 1 assemblies.
[10:22:07.834 Verbose] - TestDriver - [Workflow 4] Finished discovering test from group 0.
[10:22:07.834 Verbose] - TestDriver - [Workflow 4] Discovered 0 tests from XYZ.API.MiscService\bin\Debug\XYZ.API.MiscService.dll, updating cached data.
[10:22:07.834 Verbose] - TestDriver - [Workflow 4] Notify Aggregator about completion of test run. (Passed: 0, Failed: 0, Run succeeded: True)
[10:22:07.834 Verbose] - Aggregator - [Workflow 4] Received TestResponseEvent (TestRunCompleted)
[10:22:07.834 Verbose] - Aggregator - [Workflow 4] Coverage data for 0 tests was received during this workflow
[10:22:07.834 Verbose] - Aggregator - Starting coverage aggregation cycle - work list has 3 methods
[10:22:07.834 Verbose] - Aggregator - Finished coverage aggregation cycle - work list had 3 methods of which 3 methods were defined in 5 open files
[10:22:07.834 Verbose] - BuildManager - Allow to send a single build event.
[10:22:07.834 Verbose] - BuildManager - Interrupting build queue -> no new assemblies.
[10:22:07.834 Verbose] - Aggregator - Sending FileCoverageResult for 'C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj'
[10:22:07.834 Verbose] - Aggregator - [Workflow 4] Sending TestRunCompletedEvent
[10:22:07.850 Verbose] - StatusMargin - Received file coverage result
Изменить 5:
Согласно этому блогу:
https://blogs.msdn.microsoft.com/visualstudio/2017/03/09/live-unit-testing-in-visual-studio-2017-enterprise/
В: Почему ничего не происходит после включения или исключения тестов из Live Test Set?
A: Это известная проблема, которую мы не смогли исправить в Visual Studio 2017 версии 15.0. Теперь он исправлен в Visual Studio 2017 версии 15.2.
Оказывается, у меня есть Visual Studio/15.0.0 +26228.9. Обновление до Visual Studio 2017 (v15.2) Устанавливает проблему НЕ.
Я сообщил о проблеме https://developercommunity.visualstudio.com и сохранит все опубликованные. Он не получил сообщения о том, что среда заблокирована.
Ответы
Ответ 1
Обновление: MS заявляет, что исправлено в 15.3.2
https://social.msdn.microsoft.com/Forums/vstudio/en-US/9f5a5c01-052b-4b6a-94c5-70aae9cdf843/vs2017-live-unit-testing-only-minuss?forum=vsunittest
Хорошо, я сузил его.
Когда вы добавляете ссылку NuGet в проект Unit Test, добавляет package.config И, в некоторых сценариях может добавляться файл App.Config.
Когда я добавляю Oracle.ManagedDataAccess, в App.Config добавляется следующее:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--<configSections>
<section name="oracle.manageddataaccess.client"
type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</configSections>-->
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
</configuration>
Обратите внимание, что я прокомментировал <! - < configSections... configSections > → , только через процесс устранения. Я нашел его этот специфический тег App.Config, который приводит к сбою тестирования Live Unit.
Ответ 2
Как уже упоминалось, эта функция пока еще немного глючит. У меня была хорошая удача, однако, просто включив эту функцию и обратив внимание на окно Test Explorer. По крайней мере, на моем ящике, он запускает тесты, даже если есть "минусовые знаки" в желобе редактора кода, Однако, я видел, что функция работает правильно.
Я бы продолжал использовать эту функцию и всегда оставляю отзыв для Microsoft любым способом (в строке меню Visual Studio должна появиться кнопка Отправить отзыв).
UPDATE:
Используя существующий проект, я вообще не вижу UI в gutter редактора... У меня установлена версия 15.3.4. Я включаю в себя полное решение в тестах Live Unit и Rebuild... Я получаю это сообщение в окне вывода:
[11:42:17.584 Info] No supported test adapters are referenced by this solution. If you have a test project, add a NuGet reference to a test adapter corresponding to the test framework used in order to run the tests. If you already have the required NuGet reference in your test project, performing a NuGet restore may resolve the issue.
ОБНОВЛЕНИЕ 2:
Создав новый проект в качестве тестового примера, и после ваших шагов по включению пакета NuGet, который добавляет тег configsections, я смог воспроизвести проблему. Надеюсь, это не добавит к путанице, но я столкнулся с проблемой исключенных тестов/минусов, когда тег configsections был прокомментирован (и пакет Oracle был установлен).
Ответ 3
Я думаю, что эта функция великолепна, и она отлично работает. Однако не так уж ново (см.: http://www.ncrunch.net/).
Также у него есть одна проблема, и я просто столкнулся с этим. Это очень похожая проблема, как у вас. У вас есть несколько Unit test проектов? Если да, то вы должны проверить пакеты Nuget для всего решения. Щелкните правой кнопкой мыши на решении и нажмите "Mange Nuget пакеты для решения..."
Проверьте вкладку "Консолидация" и убедитесь, что у вас установлена одна и та же версия для каждого тестового проекта:
- MSTest.TestAdapter
- MSTest.TestFramewor
Вот скриншот установки WRONG, это приведет к сбою всей функции тестирования модуля Live.
![введите описание изображения здесь]()
После того, как вы обновили все проекты до той же версии, он должен работать. Но просто чтобы быть уверенным:
- Перезапустить VS
- Перед началом тестирования Live unit: перейдите в папку проекта .vs \\, но вы можете удалить всю папку LUT (Live Unit Test). Он может содержать недопустимые кэшированные данные.
Надеюсь, это поможет.