Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring @模拟,NullPointerException_Spring_Mockito - Fatal编程技术网

Spring @模拟,NullPointerException

Spring @模拟,NullPointerException,spring,mockito,Spring,Mockito,第一种情况有效,而第二种情况返回userDao的NullPointerException。我完全误解了这是怎么回事吗 这很有效 UserDao userDao; @Before public void setUp() throws Exception { userDao = Mockito.mock(UserDao.class); when(userDao.userExists("TestUser")).thenReturn(true); } userDao的NullPoin

第一种情况有效,而第二种情况返回userDao的NullPointerException。我完全误解了这是怎么回事吗

这很有效

UserDao userDao;

@Before
public void setUp() throws Exception {
    userDao = Mockito.mock(UserDao.class);
    when(userDao.userExists("TestUser")).thenReturn(true);
}
userDao的NullPointerException

@Mock
private UserDao userDao;

@InjectMocks
private UserService userService;

@Before
public void setUp() throws Exception {
    when(userDao.userExists("TestUser")).thenReturn(true); // NPE
}

您需要添加
MockitoAnnotations.initMocks(this)
@Before
方法创建
@Mock
注释字段。有关详细信息,请参见:

必须调用initMocks(此)方法来初始化带注释的mock。 在上面的示例中,initMocks()是在测试基类的@Before(JUnit4)方法中调用的。对于JUnit3,initMocks()可以转到基类的setup()方法。您还可以将initMocks()放在JUnit运行程序(@RunWith)中,或者使用内置的运行程序:MockitoJUnit44Runner、MockitoJUnitRunner


尝试在
@Before
方法中添加以下内容:
MockitoAnnotations.initMocks(this)。请参阅有关此的详细信息。