我刚刚开始模拟我们应用程序的不同层。当我调用最终类静态方法时,我的一个模拟对象正在返回NPE。有办法解决这个问题吗?
e.g。
when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
.thenReturn("someString");
答案 0 :(得分:9)
你必须一起使用PowerMock和Mockito。
我不明白你的代码片段正在尝试做什么,但是下面的代码片段允许Calendar类的静态getInstance()方法返回一个模拟的Calendar对象 。也许这会指出你正确的方向
在班级:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Calendar.class)
public class XXXXXX {
在您的测试方法中
PowerMockito.mockStatic(Calendar.class);
Calendar calendar = mock(Calendar.class);
when(calendar.get(eq(Calendar.HOUR_OF_DAY))).thenReturn(3);
Mockito.when(Calendar.getInstance()).thenReturn(calendar);
答案 1 :(得分:2)
Mockito不支持模拟最终的类。看看PowerMock。它允许你模拟静态方法和类。它可以与Mockito合作,documentation解释了如何做到这一点。