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相关