Mantén la atención porque en este artículo vas a encontrar la contestación que buscas.Esta sección fue evaluado por nuestros expertos para garantizar la calidad y exactitud de nuestro contenido.
Solución:
Como está usando .NET Core, supondré que también está usando XUnit.
XUnit utiliza una interfaz específica para iniciar sesión en la consola, ITestOutputHelper
que es inyectado por XUnit en los constructores de dispositivos de prueba.
Hay un paquete nuget https://www.nuget.org/packages/Divergic.Logging.Xunit que puede crear un ILogger
envoltura alrededor ITextOutputHelper
para poder pasarlos a sistemas que requieren la ILogger
interfaz.
No uso un marco de inyección de dependencia para mis pruebas de XUnit y termino conectándolos yo mismo con versiones simuladas, así que esto es lo que hago.
public sealed class MyTestFixture
private readonly ILogger _logger;
public MyTestFixture(ITestOuputHelper helper)
_logger = helper.BuildLoggerFor();
[Fact]
public void FooBar()
var myClass = new MyClass(_logger);
myClass.WizzBang();
Utilizar el AddLogging(IServiceCollection, Action
sobrecarga
var serviceProvider = new ServiceCollection()
.AddLogging(builder =>
builder.AddDebug(); //<--
//...add other logging configuration as needed
)
.BuildServiceProvider();
//...
Lo que da acceso al constructor a través de un delegado de configuración.
Siguiendo con la respuesta de Matthews, según los documentos de xUnit aquí https://xunit.net/docs/capturing-output, es simple agregar el registro de consola a cualquier prueba de unidad según el ejemplo de su sitio:
using Xunit;
using Xunit.Abstractions;
public class MyTestClass
private readonly ITestOutputHelper output;
public MyTestClass(ITestOutputHelper output)
this.output = output;
[Fact]
public void MyTest()
var temp = "my class!";
output.WriteLine("This is output from 0", temp);