2010-11-25 18 views
8

मुझे पता है कि इसी तरह के प्रश्न पूछे गए हैं, उदा। here, लेकिन एक खोज करने के बाद, मैं एक समाधान पर आया हूं, मैं hereपरीक्षण के लिए वसंत संदर्भ में नकली बीन्स इंजेक्शन

मेरी एकमात्र समस्या हालांकि, मुझे यकीन है कि इस समाधान को कार्यान्वित करने के लिए मुझे यकीन नहीं है।

मैं जो करना चाहता हूं वह है हॉटस्पेबलटेबलसोर्स के माध्यम से मेरे परीक्षण संस्करणों के साथ मेरे आवेदन संदर्भ में चुनिंदा बीन्स की बीन परिभाषाओं को ओवरराइड करें और फिर परीक्षण चलाएं।

फिर प्रत्येक टेस्ट केस के लिए मैं निर्दिष्ट करना चाहता हूं कि कौन से सेम मैं गर्म swappable बनना चाहता हूं और फिर प्रत्येक परीक्षण अपने स्वयं के नकली संस्करण बनाने और उनको स्वैप करने में सक्षम होना चाहिए, और फिर से स्वैप करने में सक्षम होना चाहिए।

मैं परीक्षण संदर्भ प्राप्त करने में सक्षम हूं जिसके साथ परीक्षण चल रहा है लेकिन मुझे नहीं पता कि एक बीन को गर्म स्वीकार्य होने के लिए कैसे कॉन्फ़िगर करना है। मुझे पता है कि एक्सएमएल के साथ सेम को कॉन्फ़िगर करते समय इसे कैसे किया जाए, लेकिन मैं बीन्स को कॉन्फ़िगर करने के लिए एक्सएमएल का उपयोग करने के लिए वापस नहीं जाना चाहता हूं।

उत्तर

9

अद्यतन: एक पुस्तकालय है जो करता है!

https://bitbucket.org/kubek2k/springockito/wiki/springockito-annotations

समाधान इस प्रकार है के रूप में:

आप प्रॉक्सी के लिए सेम आप स्वैप करने के लिए चाहते हैं कि आपके आवेदन के वसंत संदर्भ बदलने के लिए की आवश्यकता होगी:

<bean id="beanSwappable" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="targetSource" ref="beanSwap" /> 
</bean> 

<bean id="beanSwap" class="org.springframework.aop.target.HotSwappableTargetSource"> 
    <constructor-arg ref="beanToSwap" /> 
</bean> 
  • beanSwap है इस beanSwap पर प्रॉक्सी।
  • beanSwappable सेम जो संदर्भ जब आप सेम स्वैप करने के लिए
  • beanToSwap चाहते सेम

इस प्रकार परीक्षण के तहत सिस्टम में परिवर्तन आवश्यक है के डिफ़ॉल्ट कार्यान्वयन कर रहा है।

और अपने परीक्षण में कोड तरह दिखेगा:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "test.xml", "spring.xml" }) 
public class Test { 

    @Resource(name="beanSwappable") 
    Bean b; 

    @Resource(name = "beanSwap") 
    HotSwappableTargetSource beanSwap; 

    public void swap() { 
     Bean b = << create mock version >> 
     beanSwap.swap(b); 
     // run test code which 

    } 
} 
+3

लेकिन अब वहाँ एक पुस्तकालय है बहुत आसानी से यह करने के लिए ... https://bitbucket.org/kubek2k/springockito/wiki/springockito-annotations –

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