2012-06-28 7 views
6

मेरे कोड का उपयोग कर वसंत इंजेक्शन कक्षाएं उपहास करने के लिए कैसे:JMockit

class A extends X { 
    @Autowired 
    B b; 

    @Override 
    method() { 
     //do something 
     b.callMethodInB; 
     //do something 
    } 

} 

class B extends X { 
    @Autowired 
    C c; 

    @Override 
    method() { 
     //do something 
     c.callMethodInC; 
     //do something 
    } 

} 

मैं A में method() का परीक्षण करने की जरूरत है। तो B नकली कैसे करें। मैं जूनिट 4 और जेमॉकिट का उपयोग कर रहा हूं।

+1

क्या आप पूछ रहे हैं कि बी का नकल कैसे करें, या अपने परीक्षणों में नकली बी में इंजेक्ट कैसे करें? –

उत्तर

0

चूंकि मॉकिंग फ्रेमवर्क आमतौर पर डी (निर्भरता इंजेक्शन) पर निर्भर करता है, जिसका मूल रूप से मतलब है कि आपको विधि हस्ताक्षर में मॉक ऑब्जेक्ट को स्थानांतरित करने की आवश्यकता है, मुझे यकीन नहीं है कि यह संभव है।

लेकिन here पर एक नज़र डालें, यह आपको यह कैसे करने के लिए एक दिशा दे सकता है। इस तरह

8

कोशिश कुछ:

import org.junit.*; 
import mockit.*; 

public class ATest 
{ 
    @Tested A a; 
    @Injectable B b; 

    @Test 
    public void testMethod() 
    { 
     a.method(); 

     new Verifications() {{ b.callMethodInB(); }}; 
    } 
} 

JMockit स्वचालित रूप से एक इंजेक्शन B उदाहरण के साथ A को दर्शाता है (नकली क्षेत्र b से), परीक्षण कक्षा में a क्षेत्र के लिए यह सेटिंग। यह डी ढांचे का उपयोग स्वतंत्र है (वसंत)।

+0

यह ** ** ** मेरे लिए काम नहीं किया, न ही '@Mocked बी बी;' काम किया .. jmockit 1.30 पर –