我刚开始嘲笑我们的应用程序的不同层次。当我调用最后一类静态方法时,我的一个模拟对象正在返回NPE。有没有解决的办法?模拟对象调用最终类与Mockito静态方法
例如
when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
.thenReturn("someString");
我刚开始嘲笑我们的应用程序的不同层次。当我调用最后一类静态方法时,我的一个模拟对象正在返回NPE。有没有解决的办法?模拟对象调用最终类与Mockito静态方法
例如
when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
.thenReturn("someString");
你必须一起使用PowerMock和Mockito。
我不明白你的代码段试图做什么,但下面的代码片段允许Calendar类的静态getInstance()方法返回一个模拟日历对象 。也许这会为你指明正确的方向
在类级别:
@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);
如果我的类已用'@RunWith(Theories.class)'注释'怎么办? – niaomingjian
的Mockito不支持嘲讽最终class.Have看看PowerMock。它可以让你嘲笑静态方法和类。它可以和Mockito一起工作,documentation解释了如何做到这一点。
我发布了错误的代码片段。请重新检查我的代码 – user962206
无所谓,Mockito无法模拟最终课 – anergy
所以你的意思是它嘲笑最后一堂课?我认为这只是调用最终类的静态方法 – user962206
的Mockito不能嘲笑一般final的方法;然而,我怀疑即使删除'final'也会对此有所帮助... – fge
mockito模拟最终类或统计方法是不可能的。虽然,我认为你可以用力量模拟来做到这一点。也许你可以看看http://code.google.com/p/powermock/ – nikkatsa
对不起,为了混淆,我更新了我的代码片段。请检查出 – user962206