2011-03-14 15 views
13

परीक्षण मैं निम्नलिखित एनोटेशनस्प्रिंग 3 - एक नियंत्रक @Autowired सर्वलेट प्रसंग

@Autowired 
ServletContext servletContext; 

जो ठीक काम करने के लिए और सर्वलेट संदर्भ ठीक से autowired करने लगता है के साथ एक नियंत्रक है। हालांकि जब मैं JUnit मैं निम्न अपवाद मिल चलाने का प्रयास:

org.springframework.beans.factory.BeanCreationException: नाम 'ControllerTest' के साथ सेम बनाने में त्रुटि: autowired निर्भरता इंजेक्शन में विफल रहा है; क्षेत्र autowire नहीं कर सका:: अजीब मुद्दा है कि यह केवल ServletContext के साथ हुआ javax.servlet.ServletContext

, मैं इस विशेष नियंत्रक पर autowired अन्य सेम है और एकत्रित अपवाद org.springframework.beans.factory.BeanCreationException है यूनिट परीक्षण उन लोगों के लिए ठीक काम करता है।

कोई सलाह बहुत उपयोगी होगी।

उत्तर

10

@bluefoot राज्यों के रूप में, आपको MockServletContext का उपयोग करना चाहिए। इसके लिए काम करने के लिए, ServletContext ऑटो तारों की बजाय, आप ServletContextAware लागू कर सकते हैं। वेब अनुप्रयोग संदर्भ में चलते समय स्प्रिंग यह नोटिस करेगा और ServletContext इंजेक्ट करेगा और JUnit परीक्षण में आप MockServletContext को सेट करने के लिए setServletContext विधि को कॉल कर सकते हैं।

+0

यह भी बेहतर है, धन्यवाद क्रॉक! – tsunade21

6

ठीक है, आपके पास जूनिट टेस्ट परिवेश के अंदर वास्तविक ServletContext नहीं होना चाहिए।

आपको MockServletContext का उपयोग करना चाहिए।

+4

विचार के लिए धन्यवाद, मैंने इसे निम्नलिखित कोड को xml फ़ाइलों में से एक में जोड़ दिया है: tsunade21

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