2012-12-03 7 views
5

私は、このようなJavaのコードがあります。今、私はちょうどget()はテストしたい同じオブジェクトのメソッドをテストするときにオブジェクトのメソッドをモックする方法

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をテストする必要はありません()と同じで、私は模倣したいisEmpty()、メソッドをテストする、クラスの別のメソッドを呼び出す場合、メソッドを模擬することができますか?

+0

:あなたも@Before方法でこれを作成することができますこの.... –

答えて

3

実行可能なアプローチはないモックAにあると

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

ような何かをし、代わりにTestableAの面であなたのユニットテストを書きます。あなたの本当の世界の例は、より少ない自明であるホープは、あなたが別のクラスに機能を委譲する必要があるとしている取得せずのisEmptyを模擬した後、Aにそれを注入するため

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 
    ... 
} 
関連する問題