xunit Logging
Introduction
MartinCostello.Logging.XUnit
provides extensions to hook into the ILogger
infrastructure to output logs from your xunit tests to the test output.
βΉοΈ This library is designed for the Microsoft logging implementation ofILoggerFactory
. For other logging implementations, such as Serilog, consider using packages such as Serilog.Sinks.XUnit instead.
Installation
To install the library from NuGet using the .NET SDK run:
dotnet add package MartinCostello.Logging.XUnit
Usage
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Xunit;
using Xunit.Abstractions;
namespace MyApp.Calculator;
public class CalculatorTests
{
public CalculatorTests(ITestOutputHelper outputHelper)
{
OutputHelper = outputHelper;
}
private ITestOutputHelper OutputHelper { get; }
[Fact]
public void Calculator_Sums_Two_Integers()
{
// Arrange
var services = new ServiceCollection()
.AddLogging((builder) => builder.AddXUnit(OutputHelper))
.AddSingleton<Calculator>();
var calculator = services
.BuildServiceProvider()
.GetRequiredService<Calculator>();
// Act
int actual = calculator.Sum(1, 2);
// Assert
Assert.AreEqual(3, actual);
}
}
public sealed class Calculator
{
private readonly ILogger _logger;
public Calculator(ILogger<Calculator> logger)
{
_logger = logger;
}
public int Sum(int x, int y)
{
int sum = x + y;
_logger.LogInformation("The sum of {x} and {y} is {sum}.", x, y, sum);
return sum;
}
}
See below for links to more examples:
Feedback
Any feedback or issues can be added to the issues for this project in GitHub.
Repository
The repository is hosted in GitHub: https://github.com/martincostello/xunit-logging.git
License
This project is licensed under the Apache 2.0 license.
Building and Testing
Compiling the library yourself requires Git and the .NET SDK to be installed (version 7.0.100
or later).
To build and test the library locally from a terminal/command-line, run one of the following set of commands:
git clone https://github.com/martincostello/xunit-logging.git
cd xunit-logging
./build.ps1