Ich schreibe einige JUnit-basierte Integrationstests für einen REST-basierten Web-Service mit JerseyTest. Die JAX-RS-Ressourcenklassen verwenden Spring, und ich bin derzeit mit einem Testfall wie folgt verbunden:
%Vor%Dies funktioniert für die Verkabelung des Servlets. Ich möchte jedoch den gleichen Kontext in meinem Testfall teilen können, so dass meine Tests Zugriff auf Mock-Objekte, DAOs usw. haben können, die nach SpringJUnit4ClassRunner zu rufen scheinen . Leider erstellt SpringJUnit4ClassRunner einen separaten, parallelen Anwendungskontext.
Wer weiß also, wie ich einen Anwendungskontext erstellen kann, der zwischen dem SpringServlet und meinem Testfall geteilt wird?
Danke!
Ich habe ein paar Wege gefunden, um dieses Problem zu lösen.
Zuerst gibt es auf dem Blog geek @ riffpie eine ausgezeichnete Beschreibung dieses Problems und eine elegante Erweiterung von JerseyTest
, um es zu lösen:
Unit-Testing RESTful Jersey Dienstleistungen zusammengeklebt mit Spring
Leider verwende ich eine neuere Version von Spring und / oder Jersey (vergiss das) und konnte es nicht ganz zum Laufen bringen.
In meinem Fall habe ich das Problem gemieden, indem ich das Jersey Test Framework fallen ließ und Embedded Jetty zusammen mit dem Jersey Client verwendete. Dies machte in meiner Situation sowieso mehr Sinn, da ich Embedded Jetty bereits in meiner Anwendung verwendete. yves amsellem hat ein schönes Beispiel für Einheitstest mit dem Jersey Client und dem eingebetteten Jetty . Für die Spring-Integration habe ich eine Variante von Trimbo verwendet Jersey Tests mit Embedded Jetty und Spring
Tags und Links unit-testing spring jersey junit