我正在测试我的内存中DBUnit应用程序以违反约束。
我在本地运行测试时看到ConstraintViolationException
。但是,在实际部署和测试我的应用时,我会看到DataIntegrityViolationException
。
根据此answer,由于DataIntegrityViolationException
而发生If you execute Hibernate calls via the HibernateTemplate
错误。
我猜测(不完全知道)我的测试环境可能会发生这种情况。
如何检查我的测试设置是否使用HibernateTemplate
?
答案 0 :(得分:0)
AFAIK,发生的事情是PersistenceExceptionTranslationPostProcessor
会将测试期间抛出的ConstraintViolationException
转换为Spring DataIntegrityViolationException
。
ConstraintViolationException
将在单元测试中被捕获,因为这是通用的javax.validation / hibernate.validation异常,但是当您正确部署项目时,Spring会将其转换为它理解的异常。
(这主要是我的猜测,如果我错了,我会删除它)
要测试我是否正确,请从配置中删除PersistenceExceptionTranslationPostProcessor
,然后重新部署,看看是否有ConstraintViolationException
抛出