java - 如何使用 javadb JUnit 测试 jpa 代码而不修改原始数据库?

标签 java jpa junit

我正在使用 JPA 使用 javadb 将我的 java 对象存储在数据库中。

现在我已经编写了 JUnit 测试来检查对象是否从 javadb 中正确存储和删除等。

问题在于,先前测试中对数据库的修改会影响以后的测试,更重要的是,显然会修改我用于应用程序的数据库。

我发现的一个解决方案是反转每个测试的事务,但由于我正在测试的几种方法已经提交了它们的事务,我认为这对我不起作用。

我还考虑过通过将所有数据存储在文件中并随后恢复数据库来创建备份,或者使用不同的 jdbc.url 值创建创建的 persistence.xml (当我运行测试时会以某种方式使用它)而不是原来的)并创建一个单独的数据库。

但我不知道如何使这些解决方案发挥作用,也不知道它们是否是好的解决方案。

那么有人可以向我解释如何在运行这些测试时准确避免对原始数据库的修改吗?

最佳答案

我最终只是使用带有单独 persistence.xml 的 Maven,它配置了一个不同的 javadb 数据库,纯粹用于运行测试,如所述 here .

我没有将 DBUnit 用作 Alan Hay's comment由于时间限制,建议这样做,但这似乎也是一个有效的选择。

关于java - 如何使用 javadb JUnit 测试 jpa 代码而不修改原始数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37240806/

相关文章:

Java:我收到一个类转换异常错误,指向我什至没有导入的类

java - 如何将 JUnit 测试用例的多个输入模拟到我的程序中?

java - 跨窗口复制数据以填充无限数量的点

java - 使用其他框架的类不好吗?

java - Hibernate:单个表中的多个@ManyToMany 关系

java - JPA EntityManager 未在 struts2 和 JBOSS 7.1 中初始化

java - 加密/解密单元测试

java - 是否建议仅增加 junit 的方法范围?

java - JVM中如何定义内存泄漏?

java - 将简单的 Python 代码转换为 Java 方法