Unit Testing mit xUnit & C#

Unit Tests prüfen kleine, isolierte Funktionseinheiten Ihres Programms. Durch automatisierte Tests stellen Sie sicher, dass neue Änderungen keine bestehenden Funktionen zerstören (Regressionsschutz).

1. Das AAA-Prinzip (Arrange, Act, Assert)

Ein guter Test ist in drei klare Phasen unterteilt, um die Lesbarkeit und Wartbarkeit zu erhöhen.

using Xunit;

public class CalculatorTests
{
            [Fact]
            public void Add_TwoNumbers_ReturnsSum()
    {
            // 1. Arrange (Vorbereiten)
            var calc = new Calculator();

            // 2. Act (Ausführen)
            int result = calc.Add(10, 5);

            // 3. Assert (Prüfen)
            Assert.Equal(15, result);
    }
}

2. Organisation der Test-Projekte

Es ist Best Practice, Tests in einem separaten Projekt innerhalb der Solution zu führen.

  • MySolution
    • MyProject.Core (C# Projekt)
      • Calculator.cs
    • MyProject.Tests (xUnit Projekt)
      • CalculatorTests.cs

3. Mehrere Testfälle: Theory & InlineData

Mit Theory können Sie dieselbe Testlogik mit verschiedenen Eingabewerten ausführen, ohne für jeden Fall eine neue Methode zu schreiben.

[Theory]
[InlineData(1, 1, 2)]
[InlineData(10, 20, 30)]
[InlineData(-5, 5, 0)]
public void Add_VariousValues_ReturnsCorrectSum(int a, int b, int expected)
{
            var calc = new Calculator();
            int result = calc.Add(a, b);
            Assert.Equal(expected, result);
}
Zurück zu Modul 9 Übersicht Weiter zu Modul 11: Best Practices