Sunday, November 23, 2014

Unit Test mit Xamarin.Android

Mit Xamarin werden auch 2 Unit-Test-Projekt-Templates mit installiert.

Und zwar jeweils eines für iOS und eines für Android.

clip_image002clip_image004

Verwendet wird dabei eine leicht abgewandeltes NUnitLite.

Wird ein neues Unit Test App Projekt (Android) angelegt, wird die Referenz zu Xamarin.Android.NUnitLite in diesem Test-Projekt hinzugefügt. Im nächsten Schritt muss euer Projekt als Referenz zu eben diesem Testprojekt hinzugefügt werden – in meinem Beispiel die XamarinFormsSample.PCL, dann kann es schon losgehen mit dem Test.

clip_image005

Es wird ebenfalls eine Beispieldatei angelegt, die TestSample.cs. Wenn man sich diese näher ansieht, dann erkennt man, dass diese bereits eine sehr gute Ausgangsbasis für die eigenen Tests ist.

Die Datei beginnt mit den folgenden Attributen:

· TestFixture - Dieses Attribut markiert die Klasse als “Testklasse”, d. h. diese beinhaltet Unit-Tests, eine optionale Setup Methode und eine optionale Teardown Mothode.

Das Attribut alleine reicht noch nicht, diese so markierte Klasse muss einen Default-Konstruktor

· SetUp - Dieses Attribut wird innerhalb einer Klasse mit dem Attribut TestFixture dazu verwendet, um Funktionalität auszuführen, die VOR jeder Testmethode aufgerufen werden muss, also der ideale Platz um den Testfall zu initialisieren.

· TearDown – Dieses Attribut markiert eine Methode, die NACH jeder Testmethode aufgerufen wird, also ideal zum “Aufräumen”.

Eine Klasse, die mit dem Attribut TestFixture markiert wurde kann nur eine SetUp und eineTearDown Methode beinhalten. Wenn es mehrere davon gibt, wird das Projekt zwar erfolgreich kompiliert, aber die Methoden werden während der Laufzeit nicht ausgeführt.

clip_image006

Soweit zum generellen Aufsetzen der Unit-Test-Klasse. Jetzt fehlen noch die Testmethoden, das sind Methoden die mit folgendem Attribut markiert werden:

· Test - Das Test Attribut markiert eine Methode, die sich innerhalb einer Klasse befindet, die als TestFixture markiert wurde als Test-Methode. Diese darf KEINE Parameter aufweisen. Werden Parameter definiert, dann kann zwar kompiliert werden, der Test wird allerdings nicht ausgeführt werden und scheint später in dem “Test Not Run“-Bereich auf.

Das Ergebnis der Test-Methode wird mit der Assert Klasse und deren Methoden festgelegt. Es gibt insgesamt 18 davon, ich möchte nur die aus der Beispiel-Datei herausgreifen:

· Asstert.True(<condition>) - Die <condition> muss true ergeben, dann ist der Testfall in Ordnung.

· Asstert.False(<condition>) - Die <condition> muss false ergeben, dann ist der Testfall in Ordnung.

· Asstert.Inconclusive – das Ergebnis sollte manuell überprüft werden.

clip_image007 clip_image009

Lässt man das Testprojekt ablaufen, sieht das im Microsoft Android Emulator so aus:

clip_image011 clip_image013 clip_image015

Die Dokumentation zu NUnit, bzw. NUnitLite findet ihr hier.

No comments:

CSharpCodeFormatter