1

次のように静的メソッドをモックしています。

class A{
    static String methodA(HashMap<String,Boolean> h){
        ...  
        Set<String> keys=h.entrySet();  
    }
}

Powermockito コード:

Powermockito.mockstatic(A.class);  
when(A.methodA(any(HashMap.class)).thenReturn("Hey");  

ここで、methodA の呼び出しが関数定義に入るのを予期せず、直接 "hey" を返す場合。しかし、これは起こっていません。モックにもかかわらず、 methodA() への呼び出しが入り、 を渡してany(HashMap.class)いるため、null 値が渡されます。を取得しNullPointerExceptionます。私は何を間違っていますか?

4

1 に答える 1

4

クラスの上に次のものが必要です。

@RunWith(PowerMockRunner.class)
@PrepareForTest({ A.class})
 class ATest {
 ....
}

アノテーション @RunWith は、テスト ケースの実行に PowerMockRunner を使用することを示します。静的メソッドまたはプライベート メソッドをモックする必要があるクラスはすべて @PrepareForTest に入ります。この場合は class A です。

于 2012-07-12T18:18:34.927 に答える