当前位置: 首页 > 面试题库 >

模拟对象使用Mockito调用最终类的静态方法

莘聪
2023-03-14
问题内容

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

例如

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

问题答案:

您必须同时使用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);


 类似资料:
  • 我正在将Powermock从我目前正在进行的项目中移除,因此我试图仅用Mockito(Mockito-Core-2.2.28)重写一些现有的unitary测试。 无法模拟/Spy类Com.ExternalPackagePath.ExternalClass Mockito无法模仿/监视,因为: 最终类 正如Mockito文档(https://github.com/Mockito/Mockito/wi

  • } 当我做它将打印芒果,但它仍然在打印苹果。如果有人能帮助我只使用MOCKITO而不是PowerMock等。

  • 实际的方法是在第3行被调用()。我已经添加了和注释。 为什么调用实际方法?我也尝试了PowerMockito.do返回,但是得到了同样的问题。

  • 问题内容: 我已经写了一家工厂来生产物体: 我想验证传递给的参数,但不知道如何模拟静态方法。我在测试用例中使用的是和。有没有模拟或验证此特定用例的好方法? 问题答案: 在Mockito上使用PowerMockito。 示例代码:

  • 我在github示例中发现了如何使用standart Mockito创建final类(BluetoOthgatt.class)实例: 但从Mockito常见问题: Mockito的局限性是什么 需要java 1.5+ 无法模拟最终类 ... 我检查了它是来自标准android-sdk的BluetoothGatt,所以它看起来像模拟的最终类。现在我尝试build project,以确保该测试工作正常

  • 我无法使用mockito2模拟一个Kotlin final类。另外我还在用Robolectric。 这是我的测试代码: 请注意,我使用的是Mockito Version2,我使用的是依赖项,它自动启用模拟最终类的功能。