En Visual Studio 2015 Community, 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 la prueba al panel de salida. Aquí tomé una forma de hacer esto, por lo que mi código de prueba de unidad se ve 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 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 ejecución de prueba seleccionada, como aquí:
(Solo "Prueba superada... Tiempo transcurrido...")
¿Qué debo hacer para que este ITestOutputHelper funcione?
Esta solución me funciona (Visual Studio 2017 y xUnit 2.2.0.3545).
Intente agregar la siguiente configuración en el archivo App.Config . (No sé por qué. Solo era necesario. Si no existe, 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 Salida de Test 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: xxxAssemblyNameComo se explica en la página xUnit GitHub , usé
salida privada de solo lectura ITestOutputHelper;
Y esto funcionó para mí.
También me encontré 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 interesado en xUnit, diría que lo más simple sería usar NUnit o MSTest porque ambos son compatibles con console.writeline simple.