2011-01-12 26 views
7

Spring beans'e JerseyTest'in bir alt sınıfından nasıl erişileceğini anlamaya çalışıyorum. JerseyTest'i genişletme Spring içeriğini testlerimde yüklemeyi başardım, ancak bahar içeriğine nasıl erişeceğimi anlayamadım. Kurulum şu şekilde gözüküyor: Kur, varsayılan Grizzly Web Kapsayıcısını kullanıyor. Daha önce Grizzly hiç kullanmadım, ama İskelesi içinde böyle bir şey yapacağını:JerseyTest'teki Spring beans'e erişme

public Object getSpringBean(String beanName) { 
     WebAppContext context = (WebAppContext) server.getHandler(); 
     ServletContext sc = context.getServletContext(); 
     WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sc); 
     return applicationContext.getBean(beanName); 
    } 

kimse bana doğru yönde işaret?

+0

emin değil Testlerinizi korumak için daha kolay olurdu, ama bu blog yayınını bulundu: http://geek.riffpie.com/2010/ 08/09/unit-test-restful-jarse-hizmetleri-yapıştırılmış-birlikte-ile-yay/jersey-test-destek kullanarak Şimdi testlerimde @Autowired kullanabilirsiniz. – ebaxt

+0

Yukarıdaki bağlantı kırık, güncellenmiş bağlantıya benziyor: http://geek.riffpie.com/unit-testing-restful-jersey-services-glued-together-with-spring/ – crobicha

cevap

2

Bir hafta boyunca here numaralı çözümde açıklanan çözümü kullanarak, iyi çalışıyor.

10

Ben naif bir yaklaşım kullanıyorum ama sık sık Bahar Fasulye Servis/Dao tabakası vardır, Bahar fasulye kullanan JerseyTest ihtiyacını anlamıyorum

public ResourceIT() 
    { 
     super(new WebAppDescriptor.Builder("amazingpackage") 
       .servletClass(SpringServlet.class) 
       .contextParam("contextConfigLocation", "classpath:/spring/context.xml") 
       .contextListenerClass(ContextLoaderListener.class) 
       .contextPath("context") 
       .build()); 
     injectedBean = ContextLoaderListener 
       .getCurrentWebApplicationContext().getBean(InjectedBean.class); 
    } 
-1

çalışır ve onlar Birim testi/Entegrasyon Testi olmak zorunda Mockito veya DBUnit (entegrasyon Testleri) kullanarak katmanları üzerinde.

Sprig fasulyeleri alaycı olarak kullanarak Jersey Test sınıfları birimini test ediyorum. Bunun nedeni, testleri sınamak ve Jersey Jersey'de (ve Json) JerseyTest'te değil Service veya Dao Layer'da test etmektir. benim bahar fasulyesi bağlamı geçmek, ama bahar fasulyeleri sadece alay vardır, çünkü JerseyTests içinde bahar fasulye test etmek istemiyorum. size testleri ayrı tutarsanız

bu çevrede başka yolu varsa o yazıp