Erste Schritte mit NUnit

Seit längerer Zeit liebäugele ich mit dem Gedanken mich in die Programmierung mit .NET und C# einzuarbeiten. Da ich ein überzeugter Unit-Tester bin, ist die erste Frage, die ich mir stelle, wie teste ich in .NET und C#?


Vor dem Vergnügen kommt bekanntermassen die Arbeit. Also ersteinmal lesen, schlau machen und dann NUnit installieren.

Nach dem Download der letzten NUnit-Version starte ich die Installation, die mir alles auf die Platte bannt, was ich fürs Erste benötige. Auf dem Desktop und im Startmenü befindet sich nach erfolgreicher Installation ein Shortcut zum NUnit Testrunner.

Als nächstes möchte ich mein kleines Programm mit Tests belegen. Das Programm ist recht simpel und dient auch nur Lernzwecken. Es liest von der Kommandozeile 2 Zahlen ein und gibt die Summe der beiden Zahlen aus. Das Rechnen übernimmt die Klasse Arithmetik.


using System;

namespace Math
{
class Program
{
static void Main(string[] args)
{
Console.Write("Summand1: ");
int summand1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Summand2: ");
int summand2 = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Summe = " +
Arithmetik.Addition(summand1, summand2));
Console.ReadKey();
}
}
}


using System;

namespace Math
{
public class Arithmetik
{
public static int Addition(int Summand1, int Summand2)
{
return Summand1 + Summand2;
}
}
}

Nun möcht ich die Logik der Klasse Arithmetik mit Tests belegen. Also erstelle ich mir eine Klasse ArithmetikTests.


using System;

namespace Math
{
using NUnit.Framework;

[TestFixture]
public class ArithmetikTests
{
[Test]
public void TestAddition()
{
Assert.AreEqual(2, Arithmetik.Addition(1, 1));
}

[Test]
public void TestFail()
{
Assert.IsTrue(false);
}
}
}

Wichtig hier ist als erstes die Referenz auf NUnit.Framework in Zeile 5. Die Klasse, die Testfälle enthält wird mit [TestFixture] wie in Zeile 7 zu sehen, markiert. Jede in dieser Klasse implementierte Funktion, die ein Testfall darstellt wird analog dazu mit [Test] markiert. In meinem Beispiel habe ich zwei Test-Funktionen.

Nachdem ich die Solution erfolgreich erstellt habe, lade ich das Ergebnis in den NUnit-Testrunner.

NUnit Test Runner
NUnit Test Runner

Danach starte ich die Tests und sehe, dass der Test TestAddition wie erwartet arbeitet. Im Test TestFail schlägt der Testrunner wie erwartet Alarm.

NUnit Test Runner mit Fehlern
NUnit Test Runner mit Fehlern

Eine recht nützliche Option von NUnit ist nun, dass ich ohne den TestRunner beenden zu müssen, mein Projekt entsprechend anpassen und compilieren kann. Ich ändere einfach in Zeile 19 den Übergabeparameter von false auf true ab und compiliere erneut. Danach starte ich im NUnit-Testrunner die Tests. Dabei erkennt NUnit, dass die geladene EXE eine veraltete ist und lädt die neu compilierte mit den korrigierten Quellen. Diese läuft dann anstandslos durch.

NUnit Test Runner ohne Fehler
NUnit Test Runner ohne Fehler

Damit habe ich eine erste Möglichkeit gefunden beim Programmieren mit .NET und C# UnitTests implementieren zu können. Bei meinen Recherchen bin ich neben NUnit auf mb-unit und xUnit.net gestoßen. Beides alternativen zu NUnit, die ich jedoch noch nicht näher in Betracht gezogen habe.

Erste Schritte mit NUnit
Markiert in: