Warum C#-Testen nicht beängstigend, sondern vorteilhaft ist?
\n\nWenn Sie gerade erst Ihren Weg in C# beginnen und gehört haben, dass „ein guter Entwickler immer Tests schreibt“, aber keine Ahnung haben, wie Sie dieses „Biest“ angehen sollen – sind Sie hier genau richtig. Das Testen von Code schreckt Anfänger oft ab: Es scheint etwas Kompliziertes zu sein, das tiefgehende Architekturkenntnisse und Unmengen an Konfiguration erfordert. In Wirklichkeit ist das Schreiben von Tests in C# eine Fähigkeit, die man an einem Abend erlernen kann, und der Nutzen davon hält jahrelang an.
\n\nStellen Sie sich vor, Sie haben einen komplexen Mechanismus aus Tausenden von Teilen zusammengebaut. Würden Sie ihn auf voller Leistung laufen lassen, ohne jede einzelne Komponente zu prüfen? Genauso ist es mit einem Programm: Unit-Testen in C# ermöglicht es Ihnen, jede „Schraube“ Ihres Codes einzeln zu überprüfen, ohne zu warten, bis das gesamte System in der Produktion zusammenbricht. In diesem Artikel behandeln wir C#-Testen von Grund auf: von der Auswahl des Frameworks bis zum Schreiben Ihres ersten sinnvollen Tests. Los geht's!
\n\nWo man mit dem Testen in C# beginnt: Vorbereitung der Umgebung
\n\nBevor wir Code schreiben, stellen wir sicher, dass Sie alles Notwendige haben. Für das Testen in C# benötigen Sie:
\n- \n
- Visual Studio 2022 (Community Edition – kostenlos) oder JetBrains Rider (falls Sie eine Lizenz haben). \n
- .NET SDK (Version 6, 7 oder 8 – jede LTS-Version ist geeignet). \n
- Grundlegendes Verständnis von OOP in C#: Klassen, Methoden, Schnittstellen. \n
Wenn die Umgebung bereit ist, erstellen Sie ein neues Projekt. Ich empfehle, den Code sofort in zwei Projekte aufzuteilen: das Hauptprojekt (Ihre Bibliothek oder Anwendung) und das Testprojekt. In Visual Studio geschieht dies mit dem Befehl: Datei → Neu → Projekt → xUnit-Testprojekt (.NET Core) oder NUnit-Testprojekt. Aber wir gehen etwas weiter und behandeln beide beliebten Tools.
Framework auswählen: NUnit vs xUnit
\n\nIn der C#-Welt gibt es zwei Haupt„player“ für das Schreiben von Modultests: NUnit und xUnit. Beide funktionieren hervorragend, aber es gibt Nuancen:
\n\n- \n
- NUnit – ein Klassiker, der aus Java stammt (Analogon zu JUnit). Hat Attribute wie
[Test],[SetUp],[TearDown]. Sehr anschaulich für Anfänger. \n - xUnit – ein modernes Framework von den Entwicklern von ASP.NET. Verwendet
[Fact]und[Theory]. Gilt als „sauberer“ und ist besser in .NET Core integriert. \n
Für Anfänger empfehle ich xUnit – es ist einfacher, erfordert keine überflüssigen Attribute und ist leichter zu verstehen. Aber wenn Ihr Team NUnit verwendet – kein Problem, wir behandeln beide Optionen.
\n\nErster Unit-Test in C#: Code schreiben
\n\nAngenommen, wir haben eine einfache Taschenrechner-Klasse:
\n\npublic class Calculator\n{\n public int Add(int a, int b) => a + b;\n \n public int Divide(int a, int b)\n {\n if (b == 0)\n throw new DivideByZeroException("Division durch Null ist nicht erlaubt!");\n return a / b;\n }\n}\n\nJetzt schreiben wir Tests für diese Klasse. Erstellen Sie ein Testprojekt (xUnit) und fügen Sie einen Verweis auf das Hauptprojekt hinzu.
\n\nBeispiel eines Tests mit xUnit
\n\nusing Xunit;\n\npublic class CalculatorTests\n{\n [Fact]\n public void Add_ShouldReturnSum_WhenTwoNumbers()\n {\n // Arrange\n var calculator = new Calculator();\n \n // Act\n var result = calculator.Add(3, 5);\n \n // Assert\n Assert.Equal(8, result);\n }\n \n [Fact]\n public void Divide_ShouldThrowException_WhenDivideByZero()\n {\n var calculator = new Calculator();\n \n Assert.Throws<DivideByZeroException>(() => calculator.Divide(10, 0));\n }\n}\n\nBeachten Sie die Struktur Arrange-Act-Assert (AAA). Dies ist der Goldstandard für das Schreiben von Tests: Zuerst bereiten wir die Daten vor, dann führen wir die Aktion aus, dann überprüfen wir das Ergebnis. Merken Sie sich dieses Muster – es wird Sie vor Chaos bewahren.