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

标签 java unit-testing junit mockito

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

例如

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

最佳答案

您必须同时使用 PowerMock 和 Mockito。

我不明白您的代码片段试图做什么,但以下片段允许 Calendar 类的静态 getInstance() 方法返回模拟的日历 对象。也许这会为您指明正确的方向

在类(class)层面:

@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);

关于java - 使用 Mockito 调用最终类静态方法的模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083432/

相关文章:

java - Hibernate 验证——与其他对象比较

java - Windows 中的 Docker : Failed to load native library 'libnative-platform.so' for Linux amd64

javascript - '错误 : Unexpected request' during Karma Angular Unit Test

java - 如何对调用另一个方法的方法进行单元测试?

java - 我把 stub 放在哪里?

java - DAO 单元测试期间恢复数据的策略是什么?

java - 迁移到Java 11 : I need help resolving Classpath & Module Path Conflicts In Eclipse

java - 如何读取 txt 文件的每一列,并将它们放在单独的数组中?

python - 在 python 中从 boto 模拟模块

JavaScript 单元测试 : how do you keep track of all the tests you have written and what code coverage you have?