Escrito el 29/05/2024

xUnit: Template

Este es el template de un test con xUnit.

Template

using xUnit;

public class CalculatorTest {
    [Fact]
    public void GivenTwoNumbers_WhenAdd_ReturnResult() {
        // arrange
        // act
        // assert
    }
}

Agrupar tests

Se pueden agrupar tests en categorias usando el attributo [Trait]

using xUnit;

public class CalculatorTest {
    [Fact]
    [Trait("Category", "Fibonacci")] // for fibonacci category
    public void GivenTwoNumbers_WhenAdd_ReturnResult() {
    }
}

Class Fixture

Cuando la creación del objeto es muy larga o pesada como para hacerla en todos los tests. Se puede generar una instancia llamada Fixture que es singleton y ThreadSafe y herendando de IClassFixture<>

using xUnit;

public class CalculatorFixture {
    public Calculator Instancia => new Calculator();
}

public class CalculatorTest : IClassFixture<CalculatorFixture> {

    private CalculatorFixture _fixture;

    public CalculatorTest(ITestOutputHelper testOutputHelper, CalculatorFixture fixture) {
        _fixture = fixture;
    }

    [Fact]
    [Trait("Category", "Fibonacci")] // for fibonacci category
    public void GivenTwoNumbers_WhenAdd_ReturnResult() {
        ..._fixture.Instance...
    }
}