Seite 1 von 1

Abbruch von Tests

BeitragVerfasst: Mi 20. Feb 2013, 12:39
von KGunder
Hallo Josef und Paul,

ich benutze AccUnit gerne als Integration Test, d.h. meine Testklasse besteht aus mehreren Schritten (Subs) die in der Reihenfolge abgearbeitet werden.
Wenn jetzt z.B. der erste Schritt schon fehlerhaft ist ( z.B. ein neuer Auftrag wurde nicht angelegt ) dann möchte ich die nachfolgenden Schritte gar nicht mehr ausführen ( es macht keinen Sinn einen Auftrag zu buchen, wenn gar kein Auftrag da ist .. )

Kann ich also den Test dieser Klasse komplett abbrechen, so daß die folgenden Schritte gar nicht mehr ausgeführt werden?

Viele Grüße

Klaus

Re: Abbruch von Tests

BeitragVerfasst: Do 21. Feb 2013, 05:55
von Paul Rohorzka
Servus Klaus!

KGunder hat geschrieben:ich benutze AccUnit gerne als Integration Test, d.h. meine Testklasse besteht aus mehreren Schritten (Subs) die in der Reihenfolge abgearbeitet werden.

Mit einem Unit-Test-Tool wie AccUnit können natürlich alle Arten von Tests gefahren werden *. Gerade jedoch was die Reihenfolge der Testausführung angeht, kann nicht davon ausgegangen werden, dass die Testmethoden in der Reihenfolge in der sie in der Testklasse angeführt sind, ausgeführt werden.

KGunder hat geschrieben:Wenn jetzt z.B. der erste Schritt schon fehlerhaft ist ( z.B. ein neuer Auftrag wurde nicht angelegt ) dann möchte ich die nachfolgenden Schritte gar nicht mehr ausführen ( es macht keinen Sinn einen Auftrag zu buchen, wenn gar kein Auftrag da ist .. )

Wenn ein Test die Abarbeitung von Einzelschritten in einer bestimmten Reihenfolge erfordert, müssen die Schritte von einer einzigen Testmethode aus aufgerufen werden. Sobald eine Assertion fehlschlägt, werden alle andern Schritte nicht mehr ausgeführt.

KGunder hat geschrieben:Kann ich also den Test dieser Klasse komplett abbrechen, so daß die folgenden Schritte gar nicht mehr ausgeführt werden?

Nein (siehe oben).
Eine wichtige Eigenschaft von automatisierten Tests ist, dass sie möglichst unabhängig voneinander laufen. Ich würde dieses Feature daher auch eher kritisch betrachten.

LG,
Paul

* Einen Test, bei dem mehrere Schritte hintereinander ausgeführt werden, würde ich als Workflow-Test bezeichnen. Integrationstest bedeutet lediglich, dass nicht eine Komponente in Isolation getestet wird, sondern auch noch andere Komponenten beteiligt sind. Das können auch zum Beispiel sehr fokussierte (quasi einschrittige) Tests sein, die gegen die Datenbank laufen.