Unit-testing mit Spring und die Trikot-Test-Framework
Ich Schreibe einige JUnit-basierte integration-tests für einen RESTful web service mit JerseyTest. Die JAX-RS-Ressource-Klassen verwenden Frühling und ich bin momentan auf der Verdrahtung alles zusammen mit einem test-Fall, wie das folgende code-Beispiel:
public class HelloResourceTest extends JerseyTest
{
@Override
protected AppDescriptor configure()
{
return new WebAppDescriptor.Builder("com.helloworld")
.contextParam( "contextConfigLocation", "classpath:helloContext.xml")
.servletClass(SpringServlet.class)
.contextListenerClass(ContextLoaderListener.class)
.requestListenerClass(RequestContextListener.class)
.build();
}
@Test
public void test()
{
//test goes here
}
}
Diese arbeiten für die Verlegung der servlet, aber ich möchte in der Lage sein, den gleichen Kontext in meinem test-Fall, so dass meine tests haben Zugang zu mock objects, DAOs, etc., das scheint zu rufen SpringJUnit4ClassRunner. Leider SpringJUnit4ClassRunner erstellt eine separate, parallele Anwendung Kontext.
So, wer weiß, wie kann ich erstellen Sie eine Anwendung, die den Kontext, die gemeinsam zwischen den SpringServlet und meinem test-Fall?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überschreiben JerseyTest.konfigurieren, etwa so:
Für mich die SpringServlet war nicht erforderlich, aber wenn Sie brauchen, dass Sie möglicherweise in der Lage zu nennen rc.registrieren Sie sich für das auch.
Fand ich ein paar Möglichkeiten, um dieses problem zu beheben.
Als erstes über die geek@riffpie blog gibt es eine hervorragende Beschreibung dieses problem zusammen mit eine elegante Erweiterung der
JerseyTest
es zu lösen:Unit-Tests Erholsamen Jersey-services verklebt mit Feder
Leider bin ich mit einer neueren version von Feder und/oder Jersey (vergessen welches) und konnte das nicht so ganz, dass es funktioniert.
In meinem Fall landete ich vermeiden das problem, indem er die Trikot-Test-Framework und die Verwendung einer eingebetteten Jetty zusammen mit der Jersey-Client. Dieser eigentlich besseren Einblick in meine situation sowieso, da war ich schon mit eingebetteten Jetty in meiner Anwendung. yves amsellem hat ein schönes Beispiel unit-Tests mit der Jersey-Client-und embedded-Jetty. Für Spring integration, die ich verwendet, eine variation von Trimbo ' s Jersey-Tests mit Eingebetteten Jetty und Frühling