【问题标题】:Java EE/JPA Integration testing with Rollback like in SpringJava EE/JPA 集成测试与 Spring 中的 Rollback 一样
【发布时间】:2013-07-23 05:07:32
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jakarta-ee jpa junit integration-testing


    【解决方案1】:

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

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

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

    【讨论】:

    • 您好 KFleischer,此信息对您有用吗?
    • 我相信您的方法有效,但内存数据库在 out 项目中不可用。这就是我要求应用服务器解决方案的原因。但这个话题是 6 年前的事了。 ;-)
    猜你喜欢
    • 1970-01-01
    • 2011-12-26
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2010-09-21
    • 2013-01-11
    • 2011-03-08
    相关资源
    最近更新 更多