【发布时间】:2010-01-14 17:04:10
【问题描述】:
我尝试编写一个大型测试类。
我正在使用 Junit、Hibernate 和 TopLink 和 H2 数据库。在此之前我使用的是 EJB3Unit(包括 Hibernate 和 H2)。
我的测试类有 57 种测试方法。如果我一次运行所有测试随机一个或多个测试失败。如果我单独运行每个测试,则不会出错。
有人知道出了什么问题吗?以及如何防止这种情况发生?
- 对于每个测试方法,我都会创建一个新的内存数据库,但名称不同。
- 我创建了一个新的 entitymanagarfactory 和 entitymanagar 实例。
- 我已禁用二级缓存。
- 我通过脚本创建了所有表(没有发生错误,所以数据库真的很新鲜)。
- 我做了一些数据库操作和测试。
- 我清除会话和 em。
- 我删除了内存数据库中的所有对象
- 我关闭了数据库
- 我关闭了 em 和 emf。
我还需要做更多吗?
非常感谢...
【问题讨论】:
-
您是否有可能从池中提取对象(如连接)(例如,在休眠配置中)并且响应没有完全提交?您的测试设置或拆卸方法是否可能在每个实例之前没有正确注释和运行?你真的需要为每个方法调用重新创建一个数据库吗?
-
“一次性”是指测试套件中的并行执行还是顺序执行?
-
我的意思是“一次性”顺序执行。
标签: java database hibernate junit toplink