模拟对象使用Mockito调用final类静态方法

use*_*206 1 java junit unit-testing mockito

我刚刚开始模拟我们应用程序的不同层.当我调用最终类静态方法时,我的一个模拟对象正在返回NPE.有没有解决的办法?

例如

when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
    .thenReturn("someString");
Run Code Online (Sandbox Code Playgroud)

Dav*_*veH 9

你必须一起使用PowerMock和Mockito.

我不明白你的代码片段正在尝试做什么,但是下面的代码片段允许Calendar类的静态getInstance()方法返回一个模拟的Calendar对象.也许这会指出你正确的方向

在班级:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Calendar.class)
public class XXXXXX {
Run Code Online (Sandbox Code Playgroud)

在你的测试方法中

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);
Run Code Online (Sandbox Code Playgroud)