Bri*_*ris 9 java junit spring hibernate
我有一个类我是单元测试,需要相当广泛的数据库设置才能运行各个测试方法.这种设置需要很长时间:由于希望与手头的问题无关,我需要以编程方式而不是SQL转储来填充数据库.
我遇到的问题是拆除.如何轻松回滚数据库设置阶段中所做的所有更改?
我目前正在使用Hibernate + Spring Transactional Testing支持,这样我的各个测试方法都包含在事务中.
一种解决方案是在每个测试方法中进行数据库设置,以便自动回滚数据库设置.但是,测试方法需要永远运行,因为每个方法都需要重新准备数据库.
还有其他想法吗?基本上,我正在寻找一种方法来运行我的数据库设置,运行我的单独测试(每个测试都包含在执行后回滚的事务中),然后回滚初始数据库设置.有关使其以Hibernate/Spring/Junit方式工作的任何想法吗?是否有一个Hibernate"drop all tables"等效命令?
你是否坚持使用特定的数据库供应商?如果没有,您可以使用内存数据库,例如HSQLDB.当你完成测试后,你就扔掉了状态.只有在测试套件开始时(在编程设置之前)表可以为空时,这才适用.
您仍然需要创建表,但如果使用Hibernate对所有内容进行了整齐映射,则可以使用hbm2ddl生成表.您所要做的就是将以下内容添加到测试会话工厂定义中:
<session-factory>
...
<property name="hibernate.hbm2ddl.auto">create</property>
...
</session-factory>
Run Code Online (Sandbox Code Playgroud)
如果这个解决方案似乎适用,我可以详细说明.
| 归档时间: |
|
| 查看次数: |
5121 次 |
| 最近记录: |