@Mock,NullPointerException

时间:2014-08-14 09:57:29

标签: spring mockito

第一种情况有效,而第二种情况则返回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
}

1 个答案:

答案 0 :(得分:2)

您需要将MockitoAnnotations.initMocks(this);添加到@Before方法,以创建@Mock带注释的字段。请参阅here有关此内容的详细信息:

  

MockitoAnnotations.initMocks(this)方法必须调用初始化带注释的模拟。     在上面的示例中,initMocks()在test的基类的@Before(JUnit4)方法中调用。对于JUnit3,initMocks()可以转到基类的setup()方法。您也可以将initMocks()放入JUnit运行器(@RunWith)或使用内置运行器:MockitoJUnit44Runner,MockitoJUnitRunner