2

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

例如

when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
    .thenReturn("someString");
4

2 回答 2

10

您必须同时使用 PowerMock 和 Mockito。

我不明白您的代码片段试图做什么,但以下片段允许该类的静态getInstance()方法Calendar返回一个模拟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);
于 2013-06-13T09:55:21.583 回答
2

Mockito 不支持模拟最终类。看看PowerMock 。它允许您模拟静态方法和类。它可以与 Mockito 一起使用,文档解释了如何做到这一点。

于 2013-06-13T09:30:50.997 回答