我想知道在使用jeeunit(或任何其他java ee应用程序测试框架)时,是否有人在每次测试之前成功清理数据库内容?
我已尝试使用jeeunit文档中描述的@Transactional注释,它将回滚所有完成的事务。但是有些情况(会话被刷新),其中所做的更改在测试之间持续存在,从而导致测试污染。
感谢任何帮助/指导!
答案 0 :(得分:1)
由于您提到了“任何其他Java ee应用程序测试框架”,我建议您查看Arquillian Persistence Extension以对Java EE应用程序进行单元测试。您可以在此处找到有关如何使用它的教程:http://www.softwarepassion.com/java-ee-6-testing-with-arquillian-persistence-extension/
有关arquillian本身的更多信息here
答案 1 :(得分:0)
DBUnit旨在帮助解决这个问题 - 他们的网站是here
答案 2 :(得分:0)
Spring框架的AbstractTransactionalJUnit4SpringContextTests是另一个好的开始。
你可以通过在连接执行之前设置autoCommit(false)并在代码运行后回滚来自己完成。
答案 3 :(得分:0)
我的解决方案是将jeeunit与h2 db一起使用,并在每次测试之前通过本机SQL强行删除数据库中的所有行。