我必须为静态方法编写一个单元测试,该方法需要模拟同一类的另一个静态方法。样例代码:
public class A { public static boolean foo(){} public static boolean bar(){ return foo(); } } @PrepareForTest({A.class}) public ATest{ testMethod(){ mockStatic(A.class); when(A.foo()).thenReturn(true); assertTrue(A.bar()); }
}
我一直在尝试对bar方法进行单元测试,但到目前为止尚未成功。
问题:调试未到达return foo();
我的代码中的语句,并且断言失败。请指教。我目前无法修改代码
在模拟foo方法方面的任何帮助将不胜感激。谢谢!
在这种情况下,您不应在类stub
上创建模拟,而应仅使用类中的特定方法(foo()
)A
,
public staticMethodStubStrategy stub(Method method)
上面的方法属于MemberModifier
API中的类,并且是该类的超类,PowerMockito
因此您的语法应如下所示:
PowerMockito.stub(PowerMockito.method(A.class, "foo")).toReturn(true);