用于验证方案的事务性Spring Junit4测试用例

时间:2011-12-12 19:59:14

标签: java hibernate spring jpa junit4

我正在使用Spring,JPA使用hibernate进行服务 - >道层。 交易是春季管理的。 我有验证测试用例,其中,我需要验证重复数据插入并抛出异常。

在我的测试用例中,它是AbstractTransactionalJUnit4SpringContextTests

的扩展名

我已将@TransactionConfiguration配置为defaultRollback为true,并为事务管理器配置bean名称(在我的例子中是一个JpaTransactionManager的bean)

我按照以下步骤

执行此测试用例
  1. 通过调用dao.create(entity)创建一条记录; (这将成功)

  2. 创建相同的记录(所有属性与步骤1中设置的相同)并调用dao.create(entity)(这必须失败,但不会失败)

  3. 在我的create(entity)方法中,我调用了validate()方法,该方法触发标量对象查询(JPQL)进行验证。

  4. 我希望验证失败,但这无异常,并且重复的数据会插入到数据库中。

    我尝试调试(启用了hibernate日志),我发现select查询(标量查询)无法获取正确的数据(理想情况下,它应该至少获取1条记录,因为我在上面列出的步骤1中插入了数据。 )

    在选择查询验证之前,我在日志中看到第1步的插入查询。

    有没有其他方法可以为涉及spring / jpa和hibernate的场景编写测试用例?

    请发表您的观点

    提前致谢!!

1 个答案:

答案 0 :(得分:0)

你能否在这里粘贴你的测试,我相信每个测试都在自己的事务中运行,你的defaultRollback为true。这应该是问题。