Blog

Unit-Test einer mit Spring Beans verdrahteten Stripes ActionBean

Jeroen van Wilgenburg

Aktualisiert Oktober 23, 2025
2 Minuten

Letzten Freitag habe ich einige Zeit damit verbracht, herauszufinden, wie ich meine Spring Beans beim Unit-Test einiger Stripes ActionBeans initialisieren kann. Es gab überhaupt keinen Spring-Kontext, und den braucht man für Integrationstests unbedingt.

Wie man einen Unit-Test mit Stripes einrichtet, wird hier ziemlich gut erklärt. Ich habe Ansatz 2 angewandt, die Tests innerhalb eines Mock-Containers laufen zu lassen. Mein Unit-Test erweitert AbstractTransactionalJUnit4SpringContextTests und ist mit @RunWith(SpringJUnit4ClassRunner.class) und @ContextConfiguration(locations = { ... }) annotiert Der Code, den ich gleich zeigen werde, sollte nach der Initialisierung des MockServletContextes eingefügt werden. Ich empfehle die Verwendung einer mit @Before annotierten Methode, in der Sie die Initialisierung vornehmen (ich nannte meine setUpMockServletContext) Da die Unit-Tests ausgeführt werden, bevor die Spring-Konfigurationsdateien im WEB-INF-Verzeichnis abgelegt werden, müssen Sie Stripes mitteilen, wo die Konfigurationsdateien zu finden sind:

context.addInitParameter("contextConfigLocation",
"classpath:dataSourceContext.xmlnclasspath:daoContext.xmlnclasspath:applicationContext.xml");

Stripes ist (noch?) nicht intelligent genug, um die @ContextConfiguration-Anmerkung zu lesen, aber diese Datei wird wahrscheinlich irgendwo in einem übergeordneten Unit-Test enthalten sein, so dass dies keine große Sache ist. Der letzte Schritt besteht darin, Spring mitzuteilen, dass es seinen Kontext mit Ihrem MockServletContext initialisieren soll (beachten Sie, dass dies ein Stripes MockServletContext ist, nicht der von Spring verwendete!)

ContextLoaderListener springContextLoader = new ContextLoaderListener();
springContextLoader.contextInitialized(new ServletContextEvent(context));

Mehr gibt es nicht zu sagen. Hoffen wir, dass Google diesen Blog aufgreift und andere Leute dieses kleine Problem schneller lösen können als ich.

Quellen

Verfasst von

Jeroen van Wilgenburg

Contact

Let’s discuss how we can support your journey.