java - 如何使用 easymock Capture 进行测试

标签 java unit-testing easymock

我有以下代码

Record rd = registerNewRecord();
<do some processing>
rd.setFinished(true);
updateRecord(rd);

registerNewRecord方法调用RecordDao的insert方法,updateRecord调用同一个DAO上的update方法。

我有以下 easymock 代码:

Capture<Record> insertRc = new Capture<Record>();
RecordDao.insert(capture(insertRc));
Capture<Record> updateRc= new Capture<Record>();
RecordDao.update(capture(updateRc));

问题是因为在 rd 之上被插入的同一个 Record 实例正在被更新,insertRc Capture 对象也在被更新。所以我不能断言 finished 标志在插入时设置为 false。

我做错了什么?

最佳答案

如果在 insertRC 内引用和 updateRC都引用同一个对象 rd这在 update 期间发生了变化方法,您将始终看到 Record对象已经完成。但是,您可以在 update 之前测试第一个捕获的对象。打电话了。

Capture<Record> insertRc = new Capture<Record>();
RecordDao.insert(capture(insertRc));
Record insertedRecord = insertRC.getValue();
org.junit.Assert.assertFalse(insertedRecord.isFinished());

Capture<Record> updateRc= new Capture<Record>();
RecordDao.update(capture(updateRc));
Record updatedRecord = updateRC.getValue();
org.junit.Assert.assertTrue(updatedRecord.isFinished());

关于java - 如何使用 easymock Capture 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826173/

相关文章:

java - PowerMock EasyMock 基础知识

mockito - Cobertura 显示正确的覆盖范围,但在 Sonar 中许多文件显示 0% 覆盖范围

java - 如何用 Easymock 替换我的实例

java - While 循环内缺少返回语句,没有退出

java - 如何在单元测试中处理模拟的 RxJava2 可观察抛出异常

unit-testing - 测试驱动设计如何帮助一个人的软件项目?

unit-testing - Kentico 9 的单元测试项目测试在测试资源管理器中不可见

Java:Getter、Setter 和构造函数

java - 如何为我的 Scala 代码提供一个 Java 友好的界面?

java - 在二维排序数组中搜索元素