我无法使用Mockito模拟存储库

时间:2020-02-27 15:54:54

标签: java unit-testing junit mockito

我正在尝试模拟存储库,但是它不起作用(在起作用之前)。

@Mock
public UserRepository mockedUserRepository;

....

@InjectMocks
ClassDAOImpl daoImplSUT;

....

@Test
public void shouldTest() {
  Mockito.when(mockedUserRepository.findAll()).thenReturn(operators);

  List<User> users= daoImplSUT.getAllUsers();
}

我不知道为什么不起作用。调试时,我可以检查模拟的存储库是否为空。然后,我获得一个NullPointerException。

你能帮我吗? 非常感谢。

2 个答案:

答案 0 :(得分:0)

对于Junit 4:

在测试类上使用@RunWith(MockitoJunitRunner.class):

import org.mockito.junit.MockitoJUnitRunner;


@RunWith(MockitoJUnitRunner.class)
public class ExampleTest {
    //...
}

有关更多信息,请参见文档https://www.javadoc.io/doc/org.mockito/mockito-core/2.2.28/org/mockito/junit/MockitoJUnitRunner.html

对于Junit 5:

在测试类上使用@ExtendWith(MockitoExtension.class):

@ExtendWith(MockitoExtension.class)
public class ExampleTest {
    //...
}

答案 1 :(得分:0)

您没有初始化模拟。

  1. JUnit 5:先在setUp中添加MockitoAnnotations.initMocks(this) 每个测试或测试类中的@ExtendWith(MockitoExtension.class)注释
  2. JUnit 4:在设置之前添加MockitoAnnotations.initMocks(this) 每个测试或测试中的@RunWith(MockitoJUnitRunner.class)注释 课