【发布时间】:2019-10-15 10:15:12
【问题描述】:
我的 mockito 方法是使用真正的方法,而不是调用模拟的方法。您的意见会有所帮助
Java 代码。
public class CheckUser {
private final UserDao userDao;
public CheckUser (final String domain){
userDao = new UserDao(domain);
}
public IUser getExistingUser(){
if (userDao == null) {
throw new RuntimeException("userDao is null");
}
IUser existingUser = userDao.getExistingUser();
if (existingUser == null) {
throw new RuntimeException("ExistingUser is null");
}
return existingUser;
}
}
这是我的 JUnit 测试代码。
@Test
public void testExistingUser() {
UserDao mockUserDao = mock(UserDao.class);
when(mockUserDao.getExistingUser()).thenReturn(getExistingTestUser());
}
private UserDao getExistingTestUser(() {
return ExistingUserImpl.Builder(). //withfield methods. build();
}
我创建这个模拟对象仅用于测试目的。这只是返回由 IUser 实现的模拟 MockedExistingUserImpl 对象。
public class MockedExistingUserImpl implements IUser {
//fields
//overriding getter methods for all fields
//Builder for ExistingUserImpl
}
当我在我的代码中调用 userDao.getExistingUser() 时,我希望返回模拟的现有用户对象,但由于域连接,它正在命中真实方法并且测试失败。我们不建立域连接来运行 Junits。任何输入表示赞赏。谢谢!
【问题讨论】:
-
"当我在我的代码中调用 userDao.getExistingUser() 时" > 你能发布调用它的单元测试代码吗?
-
这是一个用于现场使用的类,还是一个用于测试的类?因为它似乎是一个供实时使用的类,并且在该类中内置了测试。
-
CheckUser 只是现场使用的类。其余的都是为了测试目的而创建的
-
@DatNguyen Nguyen 这是我的 Junit 代码 @Test public void testExistingUser(){ UserDao mockUserDao = mock(UserDao.class); when(mockUserDao.getExistingUser()).thenReturn(getExistingTestUser()); }
标签: java unit-testing mocking mockito junit4