我是摩基托的新手,不明白这是什么问题。而且你能不能说我,如何做Mockito单位正确,因为我真的不能理解他们!更新的错误和测试类
我有下一个例外:
下面是我的DAO类:
public class MySqlUsersDao implements UsersDao {
/** Logger. */
private static final Logger LOG = Logger.getLogger(MySqlUsersDao.class);
/*
* (non-Javadoc)
*
* @see
* ua.khpi.shapoval.autostation.dao.UsersDao#getUserIdByLogin(java.lang.
* String)
*/
@Override
public int getUserIdByLogin(String login) {
Connection connection = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
connection = DbConnector.getConnection();
stmt = connection.prepareStatement(Constants.UsersDao.SELECT_USER_ID_BY_LOGIN);
stmt.setString(1, login);
rs = stmt.executeQuery();
while (rs.next()) {
return rs.getInt(1);
}
} catch (SQLException e) {
LOG.error(e.getMessage());
return 0;
} finally {
DbConnector.close(connection, stmt, rs);
}
return 0;
}
}
public class MySqlUsersService implements UsersService {
private UsersDao usersDao;
private TransactionManager transactionManager;
public MySqlUsersService(UsersDao usersDao, TransactionManager transactionManager) {
this.usersDao = usersDao;
this.transactionManager = transactionManager;
}
@Override
public int getUserIdByLogin(String login) {
return this.transactionManager.execute(() -> this.usersDao.getUserIdByLogin(login));
}
}
public class UsersServiceTest {
@InjectMocks
private MySqlUsersService mockedUsersService;
@Mock
private static TransactionManager transactionManager;
@Mock
private static UsersDao usersDao;
@Mock
private static Users user1;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test public void testGetUserByLogin() {
when(usersDao.getUserByLogin("user1")).thenReturn(user1);
assertEquals(user1, mockedUsersService.getUserIdByLogin("user1"));
verify(transactionManager).execute(()->usersDao.getUserIdByLogin("user1"));
}
}
如果我能正确理解你的问题
verify(transactionManager).execute(()->usersDao.getUserByLogin("user1"));
它的发生是因为函数是通过引用进行比较的,并且在测试中通过的函数和在实现中通过的函数是不同的实例。
我建议您使用argumentcaptor
捕获函数。调用捕获的函数并验证它执行了您期望的操作。
我实际上是在努力做下面的事情:我的服务类 这让我想要的没有被调用,实际上与这个模拟没有任何交互。你知道我做错了什么吗??
晚安, 我正在对我的服务进行一些测试,在删除方法中执行测试时遇到了问题。 我想知道是否有人犯过这个错误,可以帮助我。 我扫描时出错。据报道,该方法没有使用。 例外情况: 代码:
当我试图通过传递强制转换的值来模拟重载的方法时,我得到了以下错误。 例如,为了模拟 我正在做 但是当我运行测试用例时,我会得到以下错误 为什么要调用,甚至在专门调用了之后? 附加详细信息 logWarn的定义
我只是想问问我的单位。测试错误,所以我有单元。像下面这样的测试,当我运行这个测试时,我得到了想要的错误,但没有被调用:实际上,这个模拟没有任何交互。重点是我想测试我从api请求的数据是否成功显示。 在gradle中,我已经实现了 组织。mockito:mockito核心:2.21.0 组织。mockito:mockito内联:2.21.0 我的单元测试是这样的,我用mockito做测试: 错误详细
我正在做一个单元测试,在我的应用程序中的类,它只是一个简单的类,我认为我做的一切都是正确的,但测试失败了,说: 需要但未调用:MContextWeakReference.Get();->在rahmat.com.app.utility.backwardcompatibility.StringResourceUtilTest.GetString(StringResourceUtilTest.java: