Testen in C# (.NET): Vollständiger Überblick über Frameworks und Tools

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Testen in C# (.NET): Frameworks und Tools



Testen ist ein wesentlicher Bestandteil der professionellen Entwicklung auf der .NET-Plattform. Eine qualitativ hochwertige Testabdeckung reduziert die Anzahl der Fehler, vereinfacht das Refactoring und erhöht das Vertrauen in das Produkt. Im C#-Ökosystem gibt es zahlreiche ausgereifte Frameworks und Hilfsprogramme, die jeweils spezifische Aufgaben lösen: vom Modultest bis hin zu Integrationstests und UI-Tests. In diesem Artikel werden wir die wichtigsten Tools, ihre Funktionen und Anwendungsbeispiele untersuchen.



Wichtige Frameworks für Modultests



Modultests (Unit-Tests) bilden die Basis der Testpyramide. In .NET Core / .NET 5+ ist xUnit.net zum De-facto-Standard geworden, obwohl NUnit und MSTest ebenfalls aktiv genutzt werden.



xUnit.net

Modern, flexibel und das beliebteste Framework. Es arbeitet nach dem Prinzip von "Fakten" (facts) und "Theorien" (theories).

  • Fakten (Fact) — einfache Tests ohne Parameter.
  • Theorien (Theory) — parametrisierte Tests mit Daten aus Attributen wie [InlineData] oder [MemberData].
  • Erfordert kein [TestClass]-Attribut — jede öffentliche Klasse kann Tests enthalten.
using Xunit;

public class CalculatorTests{ [Fact] public void Add_ShouldReturnSum() { // Arrange var calc = new Calculator(); // Act var result = calc.Add(2, 3); // Assert Assert.Equal(5, result); }

[Theory] [InlineData(1, 2, 3)] [InlineData(-1, -1, -2)] public void Add_WithMultipleInputs_ShouldReturnCorrectSum(int a, int b, int expected) { var calc = new Calculator(); var result = calc.Add(a, b); Assert.Equal(expected, result); }}


NUnit

Klassisches Framework mit einer langen Geschichte. Es zeichnet sich durch leistungsstarke Attribute und Unterstützung für Parametrisierung aus.

  • Verwendet die Attribute [Test], [TestCase], [SetUp].
  • Unterstützt die parallele Ausführung von Tests.
  • Praktisch für komplexe Szenarien mit Testdaten.
using NUnit.Framework;

[TestFixture]public class CalculatorNUnitTests{ [Test] public void Subtract_ShouldReturnDifference() { var calc = new Calculator(); var result = calc.Subtract(10, 4); Assert.That(result, Is.EqualTo(6)); }

[TestCase(5, 3, 2)] [TestCase(0, 0, 0)] public void Subtract_WithParameters_ShouldReturnCorrect(int a, int b, int expected) { var calc = new Calculator(); Assert.That(calc.Subtract(a, b), Is.EqualTo(expected)); }}


MSTest

Integriertes Framework von Microsoft. Ideal für einfache Projekte und Teams, die im Visual Studio-Ökosystem arbeiten.

  • Attribute: [TestMethod], [TestClass], [DataRow].
  • Enge Integration mit Azure DevOps und CI/CD-Pipelines.
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]public class CalculatorMSTests{ [TestMethod] public void Multiply_ShouldReturnProduct() { var calc = new Calculator(); var result = calc.Multiply(4, 5); Assert.AreEqual(20, result); }

[DataRow(2, 3, 6)] [DataRow(0, 100, 0)] [DataTestMethod] public void Multiply_WithDataRows_ShouldReturnCorrect(int a, int b, int expected) { var calc = new Calculator(); Assert.AreEqual(expected, calc.Multiply(a, b)); }}


Bibliotheken für Mock-Objekte und Isolation

Beim Modultesten ist es oft notwendig, den zu testenden Code von externen Abhängigkeiten (DB, API, Dateisystem) zu isolieren. Hierfür werden Mock-Frameworks eingesetzt.



Moq

Das beliebteste Mo

Empfehlungen