我使用JPA使用javadb将我的java对象存储在数据库中。
现在我已经编写了JUnit测试来检查对象是否正确存储并从javadb中删除等。
问题是在以前的测试中对数据库的修改会影响以后的测试,更重要的是,显然会修改我用于我的应用程序的数据库。
我找到的一个解决方案是为每次测试撤销交易,但由于我测试的几种方法已经提交了他们的交易,我不认为这对我有用。
我还考虑过创建一个备份,方法是将所有数据存储在一个文件中并在之后恢复数据库,或者使用不同的jdbc.url值创建一个创建的persistence.xml(当我正在运行时会以某种方式使用它)测试而不是原始的)并创建一个单独的数据库。
但是我不知道如何使这些解决方案中的任何一个起作用,或者它们是否是好的解决方案。
所以有人可以向我解释在运行这些测试时如何完全避免修改原始数据库?
答案 0 :(得分:1)
我最后只使用maven和一个单独的persistence.xml,它配置了一个不同的javadb数据库,纯粹用于运行测试here。
由于时间限制,我没有使用DBUnit作为Alan Hay's comment建议,但这似乎也是一个有效的选项。