Thursday, 13. October 2011
Ein Programmierer sieht rot
javatux, 22:12h
Im aktuelle Javamagazin ist der Artikel "Ein Programmierer sieht rot" erschienen. Dazu erreichte mich die Frage, wie man mit Hilfe von PatternTesting JUnit-Tests mit Hilfe von Properties gruppieren kann, das in dem Artikel nur angedeutet wird. Hier die Auflösung: der Trick besteht einfach darin, dass man vor der Test-Methode (oder vor die ganze Test-Klasse) einfach ein @RunTestOn oder @SkipTestOn mit einer selbstdefinierten Property setzt:
Das Ganze kann man mit @RunTestOn auch andersrum machen: man definiert sich eine Property, und nur wenn diese Property gesetzt ist, wird der Test auch ausgeführt. Problematik dabei ist, dass man hier immer alle Properties angeben muss, wenn man alle Tests ausführen will. Ist keine Property gesetzt, wird auch kein Test ausgeführt. Ansonsten sind aber beide Verfahren gleichwertig.
@Test @SkipTestOn(property="SKIP_EXPORT_TEST") public void testEmptyExport() throws IOException { ... }Sobald dieser Test mit der Option -DSKIP_EXPORT_TEST aufgerufen wird, wird der Test ausgeblendet. Wichtig dabei ist, dass der SmokeRunner oder ParallelRunner als Testrunner verwendet wird:
@RunWith(SmokeRunner.class) public final class DatenpaketTest { … }Man kann auch mehrere Optionen angeben:
@Test @SkipTestOn(property={"SKIP_IMPORT_TEST","SKIP_EXPORT_TEST"}) public void testImportExport() throws IOException { ... }Sobald eine der beiden Properties gesetzt ist, wird der Test ausgeblendet.
Das Ganze kann man mit @RunTestOn auch andersrum machen: man definiert sich eine Property, und nur wenn diese Property gesetzt ist, wird der Test auch ausgeführt. Problematik dabei ist, dass man hier immer alle Properties angeben muss, wenn man alle Tests ausführen will. Ist keine Property gesetzt, wird auch kein Test ausgeführt. Ansonsten sind aber beide Verfahren gleichwertig.
... comment