Подтвердить что ты не робот

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;
    }
}
}
  1. Щелкните правой кнопкой мыши метод Add и выберите "Создать" Unit Test:

введите описание изображения здесь

  1. Используйте эти настройки для создания нового проекта Unit Test с тестом:

введите описание изображения здесь

  1. Добавьте 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 и сохранит все опубликованные. Он не получил сообщения о том, что среда заблокирована.

4b9b3361

Ответ 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). Он может содержать недопустимые кэшированные данные.

Надеюсь, это поможет.