2010-03-11 10 views
38

मैं परीक्षण वर्ग@RunWith और @Context कॉन्फ़िगरेशन के साथ एनोटेटेड junit परीक्षणों में वसंत संदर्भ का उपयोग कैसे करें?

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"/services-test-config.xml"}) 
public class MySericeTest { 

    @Autowired 
    MyService service; 
... 

} 

निम्नलिखित है यह इस तरह के तरीकों में से एक में प्रोग्राम के रूप में services-test-config.xml तक पहुँचने के लिए संभव है? जैसा:

ApplicationContext ctx = somehowGetContext(); 

उत्तर

37

परीक्षण के बाद से भी एक वसंत सेम की तरह instantiated हो जाएगा, तो आप सिर्फ ApplicationContextAware इंटरफ़ेस को लागू करने की जरूरत है:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"/services-test-config.xml"}) 
public class MySericeTest implements ApplicationContextAware 
{ 

    @Autowired 
    MyService service; 
... 
    @Override 
    public void setApplicationContext(ApplicationContext context) 
      throws BeansException 
    { 
     // Do something with the context here 
    } 
} 
+0

संभव नहीं स्प्रिंग 3.0 में और ऊपर, इस तारीख तक। – ALOToverflow

+2

अजीब, मैं अपने सभी स्प्रिंग 3.0 परीक्षणों को इस तरह चला रहा हूं ... – Daff

5

अपने परीक्षण वर्ग स्प्रिंग JUnit कक्षाएं फैली तो
(जैसे , AbstractTransactionalJUnit4SpringContextTests या कोई अन्य वर्ग जो AbstractSpringContextTests फैलाता है), आप getContext() विधि को कॉल करके ऐप संदर्भ तक पहुंच सकते हैं।
पैकेज org.springframework.test पैकेज के लिए javadocs देखें।

+0

क्या एबस्ट्रेट ट्रांज़ेक्शन जेनिट 4 स्प्रिंग कॉन्टेक्स्टटेस्ट्स, या सारस्ट्रिंग कॉनटेक्स्टटेस्ट्स का उपयोग करते समय कोई अंतर है, बस मेरे जूनिट टेस्ट में एप्लीकेशनकॉन्टेक्स्टवेयर का विस्तार कर रहा है? इस उत्तर में सुझाए गए 2 अमूर्त परीक्षण वर्गों द्वारा क्या लाभ प्रदान किए जाते हैं? स्प्रिंग इंटीग्रेशन 3.0.2 में –

56

यह ठीक भी काम करता है:

@Autowired 
ApplicationContext context; 
+0

पुष्टि की गई। सबसे अच्छा समाधान। – Wrench

+0

हालांकि यह समाधान केवल तभी व्यवहार्य है जब आप इसे प्रबंधित बीन में उपयोग कर रहे हों। ApplicationContextAware को कार्यान्वित करके पीओजेओ – Aditzu

+0

में भी अच्छी तरह से काम कर रहा है वसंत 4.2 पर ठीक काम करता है – cabaji99

संबंधित मुद्दे