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

@Mock注释后,模拟实例为null

邓正真
2023-03-14
问题内容

我尝试运行此测试:

    @Mock IRoutingObjHttpClient routingClientMock;
    @Mock IRoutingResponseRepository routingResponseRepositoryMock;


    @Test
    public void testSendRoutingRequest() throws Exception {
        CompleteRoutingResponse completeRoutingResponse = new CompleteRoutingResponse();
        completeRoutingResponse.regression_latencyMillis = 500L;

        Mockito.when(routingClientMock.sendRoutingRequest(any(RoutingRequest.class))).thenReturn(completeRoutingResponse);

        RoutingObjHttpClientWithReRun routingObjHttpClientWithReRun = new RoutingObjHttpClientWithReRun
                (routingClientMock, routingResponseRepositoryMock);

...
    }

但我得到NullPointerException为:

Mockito.when(routingClientMock.

我想念什么?


问题答案:

当您要使用@Mock注释时,应使用MockitoJUnitRunner

@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {

    @Mock
    private IRoutingObjHttpClient routingClientMock;

    @Test
    public void testSendRoutingRequest() throws Exception {
        // ...
    }

}

另请参阅本教程。



 类似资料:
  • 我尝试运行此测试: 但是我得到了NullPointer异常: Mockito.when 我错过了什么?

  • 我正在尝试对一个方法进行单元测试,根据在其中创建的对象的值,该方法有不同的分支。下面的代码演示了它。 下面是TestClass: 但是,它总是失败,因为c_objectMock始终为空。我该怎么做才能告诉Mockito不要返回空对象?

  • 问题内容: 我在Python中使用模拟,并想知道这两种方法中哪一种更好(请参阅:更多pythonic)。 方法一 :只需创建一个模拟对象并使用它即可。代码如下: 方法二 :使用补丁创建一个模拟。代码如下: 两种方法都做同样的事情。我不确定这些差异。 谁能启发我? 问题答案: 与…是一个非常不同的生物。 用 模拟对象 替换 该类,并允许您使用模拟实例。看一下这个片段: 以允许您控制所调用函数中类的用

  • 问题内容: 什么是实现注释的有效用例? 在设计主要基于注释的配置系统时,我有时需要创建实现代码生成或程序配置的注释的类。 另一种选择是将批注中包含的数据镜像到DTO中,这似乎是一项开销。 这是一个例子: 与实施 我为此收到编译器警告,但是对于许多用例来说,它似乎是一个有效的工具。 上面示例的警告是 注释类型Id不应用作IdImpl的超级接口 编辑: 我刚刚从Guice找到了这个例子: 从Names

  • 我正在研究如何使用Mockito和Junit,现在测试一些片段。我不明白为什么我在Mock注释后在下面的代码中有NPE: 但是代码的第一部分工作得很好,尽管据我所知,这两个部分都是这样做的。 编辑:堆栈跟踪: null

  • 问题内容: 我正在尝试使用python模拟模块的函数(返回一些外部内容)。 我在导入模块的模拟函数时遇到了一些麻烦。 例如,在我有 我想嘲笑,以便它返回其他内容。 我正在尝试: 如果在另一个模块中被调用,它实际上似乎永远不会返回模拟对象。我在使用方法方面缺少什么吗? 请注意,如果我调用以下内容,则一切正常: 但是,如果从另一个模块内部调用,它将调用原始函数而不是模拟版本: 内容 所以我想我的问题是