2016-08-16 7 views
-1

以下は私のコードです。メソッド実行のためのJunitテストケースを記述しています。 DBが利用できないので、getListメソッドがダミー値を返すようにしたい。私がJMockitを使って同じことをする方法を提案してください。JMockitを使用して継承したメソッドを模擬する方法

class BaseClass { 

    public List<> getList() { 
     return DataBase.getList();  
    } 
} 

class ChildClass extends BaseClass { 

    public boolean perform(String temp) { 
    boolean bool=true; 
    List list = getList(); 
    for(String str:list){ 
      if(str.equals(temp); 
       bool=false; 
      break; 
    } 
    return bool; 
    } 
} 
+0

私はもはやJMockitを使用せず、Mockitoに切り替えました。上記の@Mockアノテーションを使用すると、上記の問題を解決できます。 – user1520277

+0

おそらく '@ Spy'アノテーションを意味します。しかし、JMockitテストは、とにかく簡単です。 –

+1

@ user1520277 - もう質問に気付かず、回答を参考にしていない場合は、回答を返さずに削除することはできますか? –

答えて

0

は限りChildClassとしてBaseClass::getList()を上書きすることはありませんあなたはBaseClass::getList()を模擬する必要があります。

new MockUp<BaseClass>() { 
    @Mock 
    List<> getList() { 
     return new ArrayList(); // your mock here 
    } 
} 
1

それは嘲笑されなければならないBaseClass#getList()ではないですが、DataBase#getList():必要になるBaseClass#getList()のモック

public class ExampleTest { 
    @Tested ChildClass cut; 

    @Test 
    public void findItemInList(@Mocked DataBase db) { 
     List<String> list = Arrays.asList("Abc", "test", "def"); 
     new Expectations() {{ DataBase.getList(); result = list; }}; 

     boolean itemNotFound = cut.perform("test"); 

     assertFalse(itemNotFound); 
    } 
} 

部分 mocking、which c new Expectations(cut) {{ cut.getList(); result = list; }}で行われます。しかし部分的な嘲笑は、避けるべきである既知の悪いテストの習慣です。

関連する問題