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);
}