我无法通过JUnit测试找到问题的解决方案。
数据库初始化为表中的两行(H2数据库)。JUnit测试的目的是检查在搜索具有未知id的行时是否出现异常。
在我的服务中,我有这样的东西:
private MyEntity getMyEntityById(final String id) throws MyBusinessException {
try {
MyEntity entity = this.myEntityRepository.getReferenceById(id);
if (entity == null) {
throw new MyBusinessException(BusinessError.UNKNOWN_ID_CODE);
}
}
catch (final EntityNotFoundException e) {
throw new MyBusinessException(BusinessError.UNKNOWN_ID_CODE, e);
}
}
在测试中,我希望有一个带有BusinessError.UNKNOWN_ID_CODE的MyBusinessException,因为在服务中,我希望有一个EntityNotFoundException,因为getReferenceById()
方法的javadoc说:根据JPA持久性提供程序的实现方式,这很可能总是返回一个示例,并在第一次访问时引发javax.persistence.EntityNotFoundException。
至少,我希望返回null。
相反,我返回了一个hibernate代理,测试失败。
我不知道如何得到我所期望的。你能帮我理解一下吗?
1条答案
按热度按时间bmp9r5qi1#
运行它的简单解决方案是使用transaction进行测试
比如说,