4

在我当前的项目中,我使用的是 Java EE 和 JPA。我现在面临着持久化东西的需要,并且工作测试驱动,我试图弄清楚如何测试这些东西。

在以前的 Spring 项目中,我们使用 @Transactional(Rollback=true) 在每次测试后回滚事务。我们可以调用persist + flush,然后查询以检查JPA 是否正确完成。

您如何在 Java EE 中优雅地做到这一点(最少的配置工作,最少的额外内容/资源)?

jeeunit 看起来像一个答案,但它不再继续,而是合并到“pax 考试”中,它只提供我没有的 Maven 支持。

4

1 回答 1

0

JUnit 是用来测试方法的,每个方法至少应该有 2 个测试:一个晴天和一个雨天。该方法发生的事情无关紧要。通过这种方式,我将使用一些模拟框架 (mockito) 来模拟对数据库的访问,因为数据库中的读取/写入/删除数据发生在任何方法之外。

如果您仍想测试将数据整合到数据库中,我会使用一些内存数据库,例如 HSQL 或 H2。这将允许创建您自己的用于测试目的的数据库。最后,您应该在每次执行 junit 类中的每个测试方法后创建数据库。为此,您应该使用: @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)

这将使测试执行速度稍微慢一些,但可以保证测试的独立性。

于 2019-07-29T06:16:12.683 回答