2017-10-17 4 views
0

私はhavaパブリックvoidメソッド "a"をテストすることですし、 "a"私はイテレータとして文字列を持つループを持っている私は私がしたいパラメータとして文字列イテレータでBのpublic voidメソッドを呼び出した私はPowerMockを使って "a"をテストする単体テストを作成したいのですが、どうすればこの目標を達成できますか?PowerMockを使用してループ内の他のクラスのメソッドをモックする方法はありますか?

+0

あなたは、メソッド「A」内の任意の静的メソッドのreferncesを持っています直接Mockitoを使用しない場合は、PowerMockはbascially静的メソッド、モックプライベート変数、コンストラクタをスタブするために使用されるetc..and私はあなたがやっていない願っていますクラスBのメソッドをモックしてMockito.doverifyメソッドを使ってメソッドが実際に呼び出されたかどうかを確認してください。 –

答えて

0

Mockitoを直接使用しない場合は、メソッド "a"に静的メソッド参照がありますか?PowerMockは基本的にスタティックメソッドをスタブしたり、プライベート変数、コンストラクタをモックするのに使用されます。クラスBのメソッドをモックし、Mockito.verifyメソッドを使用してメソッドが実際に呼び出されたかどうかを確認してください。下の私の答えを見てください。

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.InjectMocks; 
import org.mockito.Mock; 
import org.mockito.Mockito; 
import org.mockito.junit.MockitoJUnitRunner; 

@RunWith(MockitoJUnitRunner.class) 

public class ClassATest { 

@InjectMocks 
ClassA classsA; 
@Mock 
ClassB classB; 
@Test 
public void testClassAMethod() { 
    //Assuming ClassA has one method which takes String array, 
    String[] inputStrings = {"A", "B", "C"}; 
    //when you call classAMethod, it intern calls getClassMethod(String input) 
    classA.classAMethod(inputStrings); 
    //times(0) tells you method getClassBmethod(anyString()) been called zero times, in my example inputStrings length is three, 
    //it will be called thrice 
    //Mockito.verify(classB, times(0)).getClassBMethod(anyString()); 
    Mockito.verify(classB, times(3)).getClassBMethod(anyString()); 
    } 
} 
関連する問題