我一直尝试使用Mockito和PowerMockito来测试我的代码。我有一些类似于下面的类:
public class asdfClass{
public static String methodToMock(String item, String otheritem){
return "asdf";
}
public static String methodToMock(String item){
return "asdf";
}
}
不管出于什么原因,运行以下命令:
PowerMockito.spy(asdfClass.class);
PowerMockito.when(asdfClass.methodToMock(Mockito.any())).thenReturn("asdfghj");
似乎编译正确,但运行
PowerMockito.spy(asdfClass.class);
PowerMockito.when(asdfClass.methodToMock(Mockito.any(), Mockito.any())).thenReturn("asdfghj");
没有,并在Mockito.any()s上抛出"'void' type not allowed here"错误。
有人知道该怎么做吗?我在stackoverflow上看到的唯一其他结果建议读者去看一下文档,尽管我认为它没有提到私有静态方法中的多个参数。
(最后我希望用doNothing来模拟void结果,尽管我已经把问题归结为我所有的void方法都需要多个参数)
编辑:没关系,得到它:有可能在PowerMock中使用局部模拟私有静态方法吗?(对所选答案的评论4)。奇怪的是,这之前没有工作,但这可能是我的一部分,我所知道的)
是否可以在PowerMock中使用私有静态方法的部分mock ?, PowerMockito.doReturn(mockData).when(DataProvider.class, "readFile", param1, param2,…)做到了。
你模拟void方法,所以它不能返回任何东西,所以thenReturn()
语句应该被省略(例如,代替when()
,使用doNothing()
)。