JUnit ile test etmek istediğim bir Jersey Kaynağım var. Kaynak belirli alanları enjekte etmek Guice Sağlayıcıları kullanır: API hizmet için gerçek bir sunucu kullanılırken bu tüm güzel çalışıyorBirim testi Enjekte edilen alanlarla Jersey Kaynakları
@Path("/example/")
class ExampleResource {
@Inject
Provider<ExampleActionHandler> getMyExampleActionHandlerProvider;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<ExamplePojo> getExampleList() {
ExampleActionHandler handler = getMyExampleActionHandlerProvider.get();
handler.doSomething();
...
, ancak problemlidir test. Açıkça
public class ApiTest extends JerseyTest {
public ApiTest() throws Exception {
super();
ApplicationDescriptor appDescriptor = new ApplicationDescriptor();
appDescriptor.setContextPath("/api");
appDescriptor.setRootResourcePackageName("com.my.package.name");
super.setupTestEnvironment(appDescriptor);
}
@Test
public void testHelloWorld() throws Exception {
String responseMsg = webResource.path("example/").get(String.class);
Assert.assertEquals("{}", responseMsg);
}
}
, Guice
handler.doSomething()
çağrısı bir NullPointerException yol açmaz, böylece
ExampleResource
alanlara başlangıç fırsatı almıyor:
Testim sınıfı şu anda şöyle görünür.
Jersey'e, Sağlayıcının çalışabilmesi için Guice'i kullanarak ExampleResource sınıfını başlatması için bir yol var mı?
ile ondan applicationDescriptor nesneyi almak, ama kapalı şans hala görüyorsanız, siz ne yaptığını sona erdi? – talon8
@minichate Bunu işe aldın mı? –