Jmock 测试中对于多个接口或者方法进行编写case时,第一个没有问题,后面都会报模拟的mock已经存在

jarse0117 2012-11-08 05:30:30
Jmock 测试中对于多个接口或者方法进行编写case时,第一个没有问题,后面都会报模拟的mock已经存在。
这些case中会用到同一个接口,每次运行都会重新模拟一个mock,执行完后,会清空mock对象。但是在执行过程中后面的case会报我已经清空的mock对象还存在,这是何解啊?有人遇见过这样的问题吗?
代码如下:
private DataDictionaryServiceImpl dataDictionaryServiceImpl;
private DataDictionaryDao dataDictionaryDao;
private DictionaryDetailDao dictionaryDetailDao;

@Before
public void setUp() throws Exception {
dataDictionaryServiceImpl = (DataDictionaryServiceImpl)context.getBean("dataDictionaryService");
//模拟接口
dataDictionaryDao = mockContext.mock(DataDictionaryDao.class);
dictionaryDetailDao = mockContext.mock(DictionaryDetailDao.class);
}

@After
public void tearDown() throws Exception {
dataDictionaryServiceImpl = null;
dataDictionaryDao = null;
dictionaryDetailDao = null;
}

@Test
public void testFindDataDictionaryWithPg() {
System.out.println(">>>>>>> @DataDictionaryServiceImplTest -> testFindDataDictionaryWithPg");
//根据dataset构造的数据,设置查询条件
final DataDictionaryDto dataDictionaryDto = new DataDictionaryDto();
dataDictionaryDto.setDictionaryCode("jmocktestdic_1");
final List<DataDictionary> dataDictionaryList = new ArrayList<DataDictionary>();
//在模拟对象mockContext中建立期望Expectations
mockContext.checking(new Expectations() {
{
one(dataDictionaryDao).findDataDictionaryWithPg(dataDictionaryDto);
will(returnValue(dataDictionaryList));
}
});
this.dataDictionaryServiceImpl.setDataDictionaryDao(dataDictionaryDao);
List<DataDictionary> dataDictionaryList2 = this.dataDictionaryServiceImpl.findDataDictionaryWithPg(dataDictionaryDto);
//断言
assertNotNull(dataDictionaryList2);
}

@Test
public void testCheckDataDictionaryForInsert() {
System.out.println(">>>>>>> @DataDictionaryServiceImplTest -> testCheckDataDictionaryForInsert");

final DataDictionaryDto dataDictionaryDto = new DataDictionaryDto();
dataDictionaryDto.setDictionaryCode("jmocktestdic_1");// 字典编码
dataDictionaryDto.setDictionaryName("Jmock测试1");// 字典名称
final int count = 0;
mockContext.checking(new Expectations(){
{
oneOf(dataDictionaryDao).checkDataDictionaryForInsert(dataDictionaryDto);
will(returnValue(count));
}
});
this.dataDictionaryServiceImpl.setDataDictionaryDao(dataDictionaryDao);
boolean bool = this.dataDictionaryServiceImpl.checkDataDictionaryForInsert(dataDictionaryDto);
assertTrue(!bool);
}
其中第一个case,testFindDataDictionaryWithPg没有问题;但是第二个执行testCheckDataDictionaryForInsert时,就会报如下问题:
testCheckDataDictionaryForInsert(com.yihaodian.backend.finance.service.baseConfig.impl.DataDictionaryServiceImplTest): a mock with name dataDictionaryDao already exists
有人遇见过吗?????
...全文
180 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jarse0117 2012-11-09
  • 打赏
  • 举报
回复
没有哪位大佬遇见过这样的问题吗?我都纠结昨天一下午时间了。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧