Ich habe eine Klasse, die ich als Basis für meine Komponententests verwenden. In dieser Klasse initialisiere ich die gesamte Umgebung für meine Tests, richte Datenbankzuordnungen ein, gebe mehrere Datensätze in mehrere Tabellen usw. ein. Diese Klasse hat eine Methode mit einer Annotation @BeforeClass, die die Initialisierung durchführt. Als nächstes erweitere ich diese Klasse um bestimmte Klassen, in denen ich @Test-Methoden verwende.JUNIT: run Setup nur einmal für eine große Anzahl von Testklassen
Meine Frage ist, da die Vorher-Klasse für alle diese Testklassen genau gleich ist, wie kann ich sicherstellen, dass sie nur einmal für alle Tests ausgeführt werden. Eine einfache Lösung ist, dass ich alle Tests in einer Klasse halten kann. Die Anzahl der Tests ist jedoch riesig, auch sie sind auf Basis von Funktionsköpfen kategorisiert. Sie befinden sich also in verschiedenen Klassen. Da sie jedoch das gleiche Setup benötigen, erben sie die @BeforeClass. Als Ergebnis wird das gesamte Setup mindestens einmal pro Testklasse durchgeführt, was viel mehr Zeit in Anspruch nimmt, als ich es vorziehen würde.
Ich könnte sie alle in verschiedene Unterpakete unter einem Paket, also, wenn es einen Weg gibt, wie ich einmal für alle Tests innerhalb dieses Pakets eingerichtet ausführen kann, wäre es toll.
Haben Sie in etwa wie folgt untersucht: http://stackoverflow.com/questions/6580670/testsuite-setup-in-junit-4 – efan
Bekannte Einschränkung. Wegen solcher Probleme bevorzuge ich persönlich [testng] (http://testng.org/doc/documentation-main.html) Framework. –
@ G.Demecki Sie erwähnen das TestNG-Framework - warum haben Sie nicht eine Antwort mit dem TestNG-Weg erstellt, um dies für jeden zu tun, der sich fragen könnte? Die gleiche Stapelüberlauffrage für TestNG scheint nicht zu existieren. –