Vor kurzem hatte ich Adobes Open Source für Unittests mit dem Namen FlexUnit bereits hier im Blog vorgestellt. In der Zwischenzeit hat sich die Bibliothek weiterentwickelt und kann nun auf einfachere Weise per Compiler-Metadaten (z.B. [Test]
) gesteuert werden.
Außerdem sind die Unittests fester Bestandteile der kommenden Flash Builder 4-Version, die aktuell in der Betaphase ist. Wie einfach die Unittests aufzusetzen sind, möchte ich in diesem Artikel zeigen.
Als Beispiel verwende ich die bewährte Calculator-Klasse aus den Artikeln Unittests mit FlexUnit und AsUnit
Neuheiten im Flash Builder
Der Flash Builder kümmert sich automatisch darum, dass die notwendigen .swc-Files für FlexUnit dem Projekt hinzugefügt werden.
Unter „Datei > Neu > TestSuite-Klasse” lässt sich eine neue TestSuite erstellen. Die einzelnen TestCases sind direkt darunter („Datei > Neu > TestCase-Klasse”).
Hinter dem Debug-Button (oder im Menü „Ausführen > Debuggen”) ist die neue Option „FlexUnit-Tests”, die ein Popup öffnet. Dort lassen sich anklicken, welche TestSuites oder TestCases ausgeführt werden sollen. Anschließend wird der Test gestartet.
Im folgenden 4-minütigen Screencast sieht man, wie die TestSuite und der TestCase aufgesetzt werden.
Metatags für FlexUnit
Mit [Before]
und [After]
können Funktionen definiert werden, die vor bzw. nach dem Test aufgerufen werden. Somit lassen sich Vorbereitungen treffen oder danach Objekte wieder sauber entfernen.
Mit [Test]
wird der eigentliche Test definiert. Die Testanforderungen sind nun über Klassenmethoden von Assert
aufstellbar.
[as]
[Before]
public function setup():void {
calculator = new Calculator();
}
[After]
public function tearDown():void {
calculator = null;
}
[Test]
public function testAddNumbers():void
{
Assert.assertEquals(calculator.addNumbers(5,10), 15);
}
[/as]
In der TestSuite
muss letztendlich lediglich eine öffentliche Variable des Tests hinzufügen. Den Rest macht FlexUnit alleine.
[as]
[Suite]
[RunWith(„org.flexunit.runners.Suite“)]
public class CalculatorTestSuite {
public var calcTest:CalculatorTest;
}
[/as]
[ad]
Link: Test Driven Development using Flash Builder 4 beta and FlexUnit