c# - microsoft - visual studio installer
xunit no escribe un mensaje en el panel de salida (5)
En la Comunidad VS 2015 tengo un proyecto de muestra ASP.NET 5 (vNext) y un proyecto con pruebas unitarias (xUnit.net). La versión de DNX es 1.0.0-beta5. Mi objetivo es agregar mensajes durante la ejecución de prueba al panel de salida. Here tomé una forma de hacer esto, para que mi código de prueba de unidad se vea así:
using Xunit;
using Xunit.Abstractions;
namespace UnitTests
{
public class UnitTest1
{
ITestOutputHelper output;
public UnitTest1(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void TestTestTest()
{
output.WriteLine("Test Message");
Assert.Equal(2, 2);
}
}
}
Visual Studio Test Explorer descubre esta prueba (y está bien), pero todo lo que tengo en el panel de Salida (de Pruebas) es:
------ Run test started ------
------ Test started: Project: UnitTests ------
Starting Microsoft.Framework.TestHost [C:/Users/*******/.dnx/runtimes/dnx-clr-win-x86.1.0.0-beta5/bin/dnx.exe --appbase "C:/Users/*******/Documents/Visual Studio 2015/Projects/MvcMovie/UnitTests" Microsoft.Framework.ApplicationHost --port 55837 Microsoft.Framework.TestHost --port 55893]
Connected to Microsoft.Framework.TestHost
Running tests in ''C:/Users/*******/Documents/Visual Studio 2015/Projects/MvcMovie/UnitTests/project.json''
========== Run test finished: 1 run (0:00:03,2267169) ==========
Además, no hay ningún enlace "Salida" en la información de sintonía de prueba seleccionada, como aquí: (Solo "Prueba superada ... Tiempo transcurrido ...")
¿Qué debo hacer para que este ITestOutputHelper
funcione?
Como se explica en xunit github utilicé
Lectura privada de solo ITestOutputHelper de salida;
y esto me funcionó
Por favor, intente esta solución. Funciona para mí. (VS2017 xunit 2.2.0.3545).
Intente agregar la siguiente configuración en el archivo App.Config
. (No sé por qué. Solo es necesario. Si no sale, simplemente agregue uno nuevo en su proyecto de prueba).
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="xunit.diagnosticMessages" value="true"/>
</appSettings>
</configuration>
La información de salida se escribirá en Test
salida como se espera, como se muestra a continuación.
[xUnit.net 00:00:00.0853907] Starting: xxxAssemblyName (parallel test collections = on, max threads = 8)
[xUnit.net 00:00:00.1689373] Example.xxxTestClassName [PASS]
[xUnit.net 00:00:00.1697265] Output:
[xUnit.net 00:00:00.1700698] xxxx your Test Message
[xUnit.net 00:00:00.1797303] Finished: xxxAssemblyName
Espero que sea de ayuda. Por favor, déjeme saber si funciona. Gracias.
Simplemente use Console.Write()
y Console.WriteLine()
.
Resharper se engancha a esto y verá el resultado en los resultados de la prueba.
Solo para la implementación de ITestOutputHelper, los siguientes trabajos:
Según lo informado por @joe, debe colocar {add key = "xunit.diagnosticMessages" value = "true"} en App.config del proyecto de prueba de la unidad.
Según lo informado por @stefano, debe agregar un miembro local de tipo ITestOutputHelper a la clase de prueba. Y debe agregarlo a los parámetros de un constructor y asignar el objeto inyectado al miembro local.
Debe reconstruir después de la instrumentación con un método de salida.
Debe tener una prueba de falla.
Su llamada al método de salida debe PRECEDER la prueba / a que falla.
Esto funciona POR PRUEBA! No para una suite de prueba.
También me topé con esto la primera vez que usé XUnit después de usar Nunit durante mucho tiempo. Sorprendentemente, XUnit no admite la salida de la consola directamente, pero ofrece otras formas de lograr lo mismo.
https://xunit.github.io/docs/capturing-output.html
Si no está realmente invertido en XUnit, diría que lo más simple sería usar Nunit o MsTest porque ambos son compatibles con console.writeline simple