当前位置: 首页 > 知识库问答 >
问题:

@mock annotation之后的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);

...
    }

但是我得到了NullPointer异常:

Mockito.when

我错过了什么?

共有3个答案

相温文
2023-03-14

如果使用Junit5,也会出现同样的问题,因为没有更多的“@RunBy”注释。

在这种情况下,你应该用以下注释你的类:

@ExtendWith(MockitoExtension.class)
public class MyTestClass {
...

您还应该导入到依赖项(Maven-pom.xml)中:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>${mockito.version}</version>
    <scope>test</scope>
</dependency>
司空修贤
2023-03-14

激活@Mock注释有三个选项:MockitoRule、MockitoJUnitRunner、MockitoAnnotations。(这个)。IMHO使用MockitoRule是最好的,因为它仍然允许您选择另一个跑步者,例如参数化的

public class MockitoTest {

  @Mock
  private IRoutingObjHttpClient routingClientMock;

  @Rule
  public MockitoRule rule = MockitoJUnit.rule();

  @Test
  public void testSendRoutingRequest() throws Exception {
    // ...
  }
}
@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {

  @Mock
  private IRoutingObjHttpClient routingClientMock;

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

这可以在qn@Before方法中、在您自己的跑步者中或在自己的规则中完成。

public class MockitoTest {

  @Mock
  private IRoutingObjHttpClient routingClientMock;

  @Before
  public void createMocks() {
    MockitoAnnotations.initMocks(this);
  }

  @Test
  public void testSendRoutingRequest() throws Exception {
    // ...
  }
}
劳和歌
2023-03-14

当你想使用@Mock注释时,你应该使用MockitoJUnitRunner

@RunWith(MockitoJUnitRunner.class)
public class MockitoTest {

    @Mock
    private IRoutingObjHttpClient routingClientMock;

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

}

另请参见本教程。

 类似资料:
  • 问题内容: 我尝试运行此测试: 但我得到NullPointerException为: 我想念什么? 问题答案: 当您要使用注释时,应使用 另请参阅本教程。

  • 我试图使用Mockito框架和Junit5创建JUnit测试用例。我正在处理下面的代码: 我有一个像上面这样的类结构,我需要模仿第二种方法。 我试过@spy on FirstClass并嘲笑SecondClass和secondMethod,但嘲笑没有发生。在这种情况下我怎么能嘲笑呢? 注:我不能改变班级结构。

  • 我正在用它来实现一个模拟来调用我的抽象类。 但我的问题是,我的抽象类有太多的依赖关系是自动连接的。子类是。如果它不是一个抽象类,我会使用@InjectMocks来注入这些模拟依赖项。而是如何将mock添加到我上面给出的实例中。 在此处简化代码版本/ 我的Junit是

  • 所有东西看起来都是等级的,但看起来像是在两个领域注入了相同的对象或类似这样的东西。当我试图为一个字段使用When(..).thenreturn()时,它设置了两个数据,另一个数据和vise verse;最奇怪的是,它在调试模式下运行良好。你能说什么?

  • 本文向大家介绍Spring实战之依赖关系注入之后的行为示例,包括了Spring实战之依赖关系注入之后的行为示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Spring实战之依赖关系注入之后的行为。分享给大家供大家参考,具体如下: 一 配置 二 接口 1 Axe 2 Person 三 Bean 1 Chinese 2 SteelAxe 四 测试类 五 测试结果 Spring实例化依赖be

  • 我正在使用SpringRunner运行JUnit mockito测试用例,下面是类,我试图编写测试用例,但得到空对象 //Junit测试用例 但是下面的代码即使在模拟这个之后仍然返回空值,你能帮助如何模拟这个吗? 注意:只有Mockito需要使用无powermockito