当前位置:编程学习 > JAVA >>

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

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
有人遇见过吗????? --------------------编程问答-------------------- 没有哪位大佬遇见过这样的问题吗?我都纠结昨天一下午时间了。
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,