💎 Lehrpfad 4: Architektur, xUnit & Cloud Master

C# 15: xUnit Tests, Data-Theories & Assertions

Schreibe professionelle automatisierte Tests im .NET-Ökosystem mit xUnit: Fakten ([Fact]), datengetriebene Tests ([Theory]) und Exceptions.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.cs (Startercode) 🧪 TestAufgabe.cs (Tests) 💡 Musterloesung.cs (Lösung) 📖 README.md

💡 1. Professionelles Unit Testing mit xUnit

xUnit ist der moderne Standard in der .NET-Welt. Tests nutzen Fluent Assertions und datengetriebene Theorien:

public class CalculatorTests {
    private readonly Calculator _calc = new();

    // 1. Einfacher isolierter Testfall:
    [Fact]
    public void Add_TwoPositiveNumbers_ReturnsSum() {
        int result = _calc.Add(2, 3);
        Assert.Equal(5, result);
    }

    // 2. Datengetriebener parametrisierter Test:
    [Theory]
    [InlineData(2, true)]
    [InlineData(3, false)]
    [InlineData(0, true)]
    public void IsEven_Numbers_EvaluatesCorrectly(int number, bool expected) {
        bool result = _calc.IsEven(number);
        Assert.Equal(expected, result);
    }

    // 3. Exception Testing:
    [Fact]
    public void Divide_ByZero_ThrowsDivideByZeroException() {
        Assert.Throws(() => _calc.Divide(10, 0));
    }
}
🧪 Didaktische Analogie: Das Crashtest-Zentrum

Ein Auto geht erst in Serienproduktion, wenn die Crashtests für Frontal-, Seiten- und Heckaufprall bestanden sind. `[Fact]` testet den Frontalaufprall; `[Theory]` testet ihn mit 30, 50 und 100 km/h!

⚡ 2. Quick-Cheat-Sheet

AttributEinsatzzweckBeispiel
[Fact]Test ohne ParameterPrüft eine feste Bedingung
[Theory]Test mit ParameternWird für jeden Datensatz erneut ausgeführt
[InlineData(...)]Liefert Testdaten für Theory[InlineData(10, 20, 30)]
Assert.ThrowsPrüft ExceptionFängt erwarteten Fehler ab

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Assert.Equal Reihenfolge

In xUnit gilt: Assert.Equal(expected, actual). Wer sie vertauscht, bekommt bei Testfehlschlägen verwirrende Diffs angezeigt.

⚠️ Mehrere Asserts ohne Relevanz

Testet ein Testfall 10 verschiedene Dinge gleichzeitig, verschleiert der erste Fehlschlag alle weiteren Fehler. Halte Tests fokussiert!

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.cs

💻 In Web-IDE öffnen & lösen →