मैं JUnit के साथ यूनिट परीक्षण के प्रयोजनों के लिए एक स्प्रिंग (3+) बीन में मॉकिटो मॉक ऑब्जेक्ट इंजेक्ट करना चाहूंगा। वर्तमान में @Autowired
निजी सदस्य फ़ील्ड पर एनोटेशन का उपयोग करके मेरी बीन निर्भरताएँ इंजेक्ट की जाती हैं।
मैंने उपयोग करने पर विचार किया है ReflectionTestUtils.setField
लेकिन जिस सेम उदाहरण को मैं इंजेक्ट करना चाहता हूं वह वास्तव में एक प्रॉक्सी है और इसलिए लक्ष्य वर्ग के निजी सदस्य फ़ील्ड घोषित नहीं करता है। मैं निर्भरता के लिए एक सार्वजनिक सेटर बनाने की इच्छा नहीं करता हूं क्योंकि मैं परीक्षण के प्रयोजनों के लिए अपने इंटरफ़ेस को शुद्ध रूप से संशोधित करूंगा।
मैंने स्प्रिंग समुदाय द्वारा दी गई कुछ सलाह का पालन किया है, लेकिन नकली का निर्माण नहीं होता है और ऑटो-वायरिंग विफल हो जाती है:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
वर्तमान में मेरे द्वारा की गई त्रुटि इस प्रकार है:
...
Caused by: org...NoSuchBeanDefinitionException:
No matching bean of type [com.package.Dao] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {
@org...Autowired(required=true),
@org...Qualifier(value=dao)
}
at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)
at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770)
यदि मैं constructor-arg
कुछ अमान्य मान को सेट करता हूं तो अनुप्रयोग संदर्भ शुरू करते समय कोई त्रुटि नहीं होती है।