我有一个简单的DAO方法,我正在尝试测试:
public boolean insertUser (User user) throws DaoException {
boolean result = false;
try {
em.persist(user);
result = true;
} catch ( Exception e) {
throw new DaoException( e );
}
return result;
}
因为持久化可以返回异常,我想对这种情况进行单元测试:
我嘲笑了实体经理:
@Mock
EntityManager mockEm;
我的测试:
@Test
public void testExceptionEntityExistInsertUser() throws Exception {
System.out.println("entity already exist exception");
boolean result;
when(mockEm.persist(user)).thenThrow(EntityExistsException.class);
result = userDao.insertUser(user);
}
但在线时(mockEm.persist(user))。thenThrow(EntityExistsException.class);我有以下错误: 'void'类型不允许在这里
我不明白问题的来源。
答案 0 :(得分:0)
解决方案是设置不允许的实体数据。例如,当此数据具有@NotNull标记时,数据为null:
@Test
public void testExceptionEntityExistInsertUser() throws Exception {
System.out.println("entity already exist exception");
boolean result;
user.setData(null) // assuming data has a NotNull tag
result = userDao.insertUser(user);
}
然后测试会产生异常。