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进入函数定义时,而是直接返回“嘿”。然而,这并没有发生。尽管进行了模拟,但对 methodA() 的调用进入了它,并且由于我正在传递any(HashMap.class),因此传递了一个空值。我得到一个NullPointerException. 我究竟做错了什么?

4

1 回答 1

4

您需要在课堂上具备以下条件:

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

注释@RunWith,表明PowerMockRunner 将用于执行测试用例。任何需要模拟静态或私有方法的类都进入@PrepareForTest,在本例中为:class A。

于 2012-07-12T18:18:34.927 回答