Ich arbeite an einem Spring MVC-Projekt, und ich habe Komponententests für alle verschiedenen Komponenten im Quellbaum.Komponententests vs. Integrationstests mit Spring
Zum Beispiel, wenn ich einen Controller HomeController
, haben die ein LoginService
hinein injiziert haben muss, dann in meiner Unit-Test HomeControllerTest
ich instanziiert das Objekt einfach als normal (außerhalb des Frühlings) und injizieren die Eigenschaft:
protected void setUp() throws Exception {
super.setUp();
//...
controller = new HomeController();
controller.setLoginService(new SimpleLoginService());
//...
}
Das funktioniert gut zum Testen jeder Komponente als eine isolierte Einheit - außer jetzt, dass ich ein paar Dutzend Klassen im Projekt habe, nachdem ich eine Klasse geschrieben und einen erfolgreichen Komponententest geschrieben habe, vergesse ich immer meine Spring MVC zu aktualisieren Kontextdatei, die die tatsächliche Verkabelung in der bereitgestellten Anwendung durchführt. Ich stelle fest, dass ich vergessen habe, die Kontextdatei zu aktualisieren, wenn ich das Projekt auf Tomcat ausstelle und eine Reihe von NullPointern aus nicht verkabelten Beans finde.
So, hier sind meine Fragen:
Dies ist mein erster Frühling Projekt - ist es normal, Unit-Tests für die einzelnen Bohnen zu schaffen, wie ich getan habe, und dann eine zweite Reihe von Tests erstellen (Integrationstests) um zu testen, dass alles wie erwartet mit dem tatsächlichen Anwendungskontext funktioniert? Gibt es dafür eine bewährte Methode?
Wie trennen Sie außerdem die Komponententests von den Integrationstests? Ich habe alle Quellcode in
src
, die Unit-Tests intest
- sollte es einen zweiten Test-Ordner (wietest-integration
) für die Integration Testfälle?
Da dies mein erstes Frühlings Projekt, ich bin gespannt, wie andere gehen in der Regel über diese Art der Sache zu tun - und nicht neu erfinden das Rad, frage ich lieber den Rest der Gemeinschaft.
Das klingt nach einer guten Strategie. Aber mit den Komponententests und Integrationstests in den gleichen Verzeichnissen gibt es für Eclipse keine Möglichkeit, sie voneinander zu unterscheiden, oder? Die einzigen Optionen von Eclipse zum Ausführen von Junit-Tests sind, nur einen auszuführen oder alle in einem bestimmten Ordner auszuführen - sie können nicht nach Namen wie Ant aufgeteilt werden. –
Ich musste zurückgehen und Eclipse überprüfen - Sie haben Recht, ich sehe keine Möglichkeit, die Tests zu unterscheiden, wenn sie sich im selben Verzeichnis befinden. Mein letztes Frühjahrsprojekt wurde in Idea/Intellij gemacht und es war lange genug, dass ich mich nicht mehr genau an die IDE-Konfiguration erinnere. –