c# .net unit-testing visual-studio-2017 live-unit-tests

c# - VS2017 Live Unit Testing-solo menos-no funciona



.net unit-testing (6)

TL; DR; Editar 6: lo he reducido y proporcioné 5 pasos para reproducir el problema / error.

  1. Cree una aplicación de consola VS2017 c # (.Net Full Framework)
  2. Agregue un método al Program.cs y haga que la clase sea pública:

public class Program { static void Main(string[] args) { } public int Add(int a, int b) { return a + b; } } }

  1. Haga clic con el botón derecho en Add Method y elija Create Unit Test:

  1. Use estas configuraciones para crear un nuevo Proyecto de Prueba de Unidad con la prueba:

  1. Agregar una prueba de unidad

[TestMethod()] public void AddTest() { Program p = new Program(); var r = p.Add(1, 2); Assert.IsTrue(3 == r); }

  • Menú de prueba> Prueba de unidad en vivo> Inicio
  • Menú contextual sobre AddTest() > Live Testing> Incluir

Ahora cambie el símbolo de Add + a :

El Live Unit Testing funciona, ¡cambie el símbolo a a + y el Live Test pasa!

Ahora agregue una referencia a una DLL Nuget (cualquiera lo hará) - Live Unit Testing ya no funciona! ¡O simplemente cierra la Solución, vuelve a abrirla y Live Unit Testing ya no funciona!

Configuré un proyecto de MSUnitTest v2 y comencé a probar la unidad en vivo. Estoy usando un proyecto Web Api 2 .Net (Full Framework v4.5.2).

Veo los signos de Menos en todos lados, pero no Ticks o Cruces.

Cambio el código de la misma manera que lo hacen en Live Unit Testing en el video de Visual Studio 2017 y los relojes aparecen sobre los negativos pero luego nada ...

La prueba unitaria pasará cuando la depure:

Cuando muevo el mouse sobre el menos azul, el mensaje es "Cubierto por 0 pruebas"

He encontrado que necesita MSTest.TestAdapter y MSTest.TestFramework según https://developercommunity.visualstudio.com/content/problem/5520/live-unit-test-are-only-showing-minuses-using-micr.html que he hecho y estoy haciendo referencia tanto a V1.18:

  • Microsoft.VisualStudio.TestPlatform.TestFramework
  • Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions

Hay muchos beta testers que informaron el mismo problema:

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

Todas las publicaciones se resuelven o no se arreglan.

Este usuario de Stackoverflow tuvo un problema con Live Unit Testing pero es un problema de excepción nula . Intenté la solución en los comentarios para eliminar el Microsoft.VisualStudio.QualityTools.UnitTestFramework del Gac, cuando intenté desinstalarlo de C: / Windows / assembly obtuve un acceso denegado y desinstalado a través de un símbolo del sistema de desarrollador:

GacUtil /u Microsoft.VisualStudio.QualityTools.UnitTestFramework

Resultados en:

Assembly: Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version = 10.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL No se puede desinstalar: el ensamblado es requerido por una o más aplicaciones

¿Alguien podría ayudarme a hacer que Live Unit Testing funcione?

Editar 1:

En VS> Herramientas> Opciones> Prueba de unidad en vivo, cambié el registro a Verbose.

Mirando la salida vi una advertencia:

[15: 48: 26.521 Detallado] - TestDriver - TestDiscoverer mensaje de registro: Advertencia - El sistema de configuración no se pudo inicializar

Después de algunas respuestas, todavía no pude deshacerme de "El sistema de configuración no se pudo inicializar", no estoy seguro de si esto es un acertijo o no, es la única pista que he encontrado hasta ahora ...

Editar 2:

Ejecuté VS2017 como administrador y eliminé el error "El sistema de configuración no se inicializó". Lamentablemente, ejecutar como administrador no hace la diferencia, todavía no funciona pero no falla con ninguna excepción.

Aquí está el registro detallado. Es interesante que "Preparación para comenzar el descubrimiento de la prueba" parece que encontró la prueba x86 que he incluido.

Sin embargo, claramente no puede descubrir la prueba; "Descubierto 0 pruebas"

[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

Editar 3:

Eché un vistazo a las huellas de ProcessMonitor de hoy ... nada realmente se destacó, podría haberme perdido algo, pero estoy empezando a sentir que esto es un error, no un problema de configuración.

Estoy trabajando en un entorno realmente bloqueado por lo que podría ser que algo se bloqueó durante la instalación de vs2017. Sé que el dominio de Unity3D no está incluido en la lista blanca para descargas. Aunque todas las cosas básicas de Visual Studio Microsoft están instaladas. Estoy empezando a quedarme sin estrategias de solución de problemas de diagnóstico. ¡Alguna idea muy bienvenida!

Editar 4:

Esta mañana decidí deshacerme de la DLL de Microsoft.VisualStudio.QualityTools.UnitTestFramework del GAC. Lo hice siguiendo estas instrucciones para superar el acceso denegado :

Esto llevó a encontrar una de las posibles causas raíz. Empecé a ver el registro de pruebas en vivo de la unidad:

[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.

Me autoricé a todos esos directorios, solo para descartar problemas de permisos:

Esto todavía no funciona, sin embargo, parece que me estoy acercando, ya que las Pruebas de unidad en vivo tardan un poco más en no funcionar (es decir, los relojes que aparecen encima del menos tardan más en procesarse).

Luego probé ProcMon de nuevo y mostró algunos registros interesantes, pero ninguna pistola humeante.

Aquí está el Registro Verbose actual:

[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

Editar 5:

Según este blog: https://blogs.msdn.microsoft.com/visualstudio/2017/03/09/live-unit-testing-in-visual-studio-2017-enterprise/

P: ¿Por qué no sucede nada después de incluir o excluir las pruebas del Live Test Set?

R: Este es un problema conocido que no pudimos corregir en Visual Studio 2017 versión 15.0. Ahora está arreglado en Visual Studio 2017 versión 15.2.

Resulta que tengo Visual Studio / 15.0.0 +26228.9. La actualización a Visual Studio 2017 (v15.2) NO soluciona el problema.

He informado el problema a https://developercommunity.visualstudio.com y mantendré a todos informados. No se informó correctamente que el entorno está bloqueado.


Como otros han mencionado, esta característica aún está un poco falsa. Sin embargo, he tenido bastante suerte con solo encender la función y prestar atención a la ventana del Explorador de pruebas: al menos en mi caja, ejecuta las pruebas, incluso si hay "signos negativos" en el canal del editor de códigos. . Sin embargo, he visto que la función funciona correctamente.

Seguiría usando la función y seguiría enviando comentarios a Microsoft de la forma que sea posible (debe haber un botón Enviar comentarios en la barra de menú de Visual Studio).

ACTUALIZAR:
Usando un proyecto existente, no veo ninguna UI en el canal del editor ... Tengo instalada la versión 15.3.4. Incluyo una solución completa en Live Unit Tests y Rebuild ... Recibo este mensaje en la ventana de resultados:

[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.

ACTUALIZACIÓN 2: Creando un nuevo proyecto como caso de prueba, y siguiendo los pasos para incluir un paquete NuGet que agrega una etiqueta configsections, pude reproducir el problema. Espero que esto no aumente la confusión, pero solo tuve el problema de las pruebas excluidas / signos negativos cuando la etiqueta de las configuraciones fue comentada (y el paquete Oracle fue instalado).


Creo que la función es excelente y funciona bien. Sin embargo, no es tan nuevo (ver: http://www.ncrunch.net/ ).

También tiene un problema y me acabo de encontrar con eso. Es un problema muy similar al que tienes. ¿Tienes múltiples proyectos de prueba de la Unidad ? En caso afirmativo, entonces debe verificar los paquetes Nuget para la solución completa. Haga clic con el botón derecho en la solución y haga clic en "Administrar paquetes de Nuget para la solución ..." Verifique la pestaña "Consolidar" y asegúrese de tener la misma versión instalada en cada proyecto de prueba de:

  • MSTest.TestAdapter
  • MSTest.TestFramewor

Aquí hay una captura de pantalla de una configuración INCORRECTA que hará que falle toda la función de prueba de la unidad en vivo.

Después de actualizar todos los proyectos a la misma versión, debería funcionar. Pero solo para estar seguro:

  • Reiniciar VS
  • Antes de iniciar la prueba de unidad en vivo: vaya a su carpeta de proyecto .vs // lut pero puede eliminar toda la carpeta LUT (Live Unit Test). Puede contener datos en caché no válidos.

Espero que ayude.


Enfrenté el mismo problema con v15.5.6. Encontré que la solución era ir a Herramientas | Prueba de unidad en vivo | Eliminar datos persistentes.


Estaba teniendo el mismo problema con una solución simple que incluía un proyecto de biblioteca de clase y un proyecto de prueba. Aparentemente, mi proyecto de prueba fue excluido de Live Unit Testing. Después de incluir el proyecto (haga clic con el botón secundario en Proyecto> Prueba de unidad en vivo> Incluir), los iconos funcionaron correctamente. Si bien esto me solucionó el problema, realmente no tengo claro cuál es el valor de tener los iconos de prueba en vivo en cada línea de código en mis clases de prueba.


Tuve este problema exacto, y pude hacer que esto funcionara actualizando a visual studio 15.7.3, y seleccionando Test> Live Unit Testing> Options - y luego ejecutando "Delete Persisted Data".


Actualización: MS dice que está arreglado en 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

Ok, lo he reducido.

Cuando agrega una referencia NuGet al Proyecto de Prueba de Unidad, agrega un paquete.config AND en algunos escenarios podría agregar un archivo de App.Config.

Cuando agrego Oracle.ManagedDataAccess, se agrega lo siguiente a 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>

Observe cómo comenté las <! - <configSections ... configSections> -> , simplemente a través de un proceso de eliminación. Encontré esta etiqueta App.Config específica que hace que la prueba Live Unit falle.