2012-12-03 17 views
5

मैं इस तरह के जावा कोड है:एक वस्तु में एक विधि उपहास करने के लिए कैसे जब एक ही वस्तु में एक विधि का परीक्षण

public class A { 
    public int get() { 
     // many codes 
     String s = new String(); 
     //... 
     int n = 5; 
     return isEmpty(s) ? n : -1; 
    } 
    public boolean isEmpty(String s) { 
     return s.isEmpty(); 
    } 
} 

अब मैं सिर्फ (मिल) परीक्षण करना चाहते हैं, मैं नहीं isEmpty परीक्षण करना चाहते हैं() वही है, इसलिए मैं माइक करना चाहता हूं(), बस एक विधि का परीक्षण करें, अगर यह कक्षा की दूसरी विधि का आह्वान करता है, तो विधि को मॉक करने में आसान हो सकता है?

+0

प्राप्त यदि आप किसी अन्य वर्ग के लिए समारोह को सौंपने के लिए है करने के लिए जा रहे हैं बिना IsEmpty नकली करने के लिए, और उसके बाद इंजेक्षन आशा है कि ए में अपने वास्तविक दुनिया उदाहरण से भी कम समय मामूली बात है इस.... –

उत्तर

3

एक व्यावहारिक दृष्टिकोण नहीं नकली A है और तरह

public class TestableA extends A 
{ 
    @Override 
    public boolean isEmpty(String s) 
    { 
     // "mock" impl goes here, eg.: 
     return s; 
    } 
} 

कुछ करना और TestableA बजाय के संदर्भ में अपनी इकाई परीक्षण लिखें। तुम भी एक @Before विधि में इस बना सकते हैं:

public class UnitTest 
{ 
    private A a; // note: A, not TestableA! 

    @Before 
    public void setUp() 
    { 
     this.a = new A() 
     { 
      @Override 
      public boolean isEmpty(String s) 
      ... 
     } 
    } 

    @Test 
    ... 
} 
संबंधित मुद्दे