@Runwith(PowerMockRunner.class)
@PrepareForTest(Test.class)
public class A {
public static void main(String []args){
PowerMockito.mockStatic(Test.class);
when(Test.foo()).thenReturn(true);
B.foo();
}
}
B的实现是这样的
public class B{
public static void foo(){
boolean f = Test.foo();
}
}
我正在编写代码来测试B.foo()
哪些调用Test.foo()
我想模仿Test.foo()
以便始终返回true
。但是当我运行此代码时,它会产生错误when() requires an argument which has to be 'a method call on a mock
。我无权编辑B类或类Test
。如果我将A类中的方法设为Junit,它可以正常工作。但我不能像Junit一样运行它,因为我在很多输入上运行它。有没有Junit的方法来模拟一个方法?
答案 0 :(得分:0)
两个问题:
您正在使用mockito和powermock?你应该使用
期望(Test.foo())andReturn(真);
而不是
when(Test.foo()).thenReturn(true);
完成后,您应该像以下一样调用重播:
replay(Test.class);