gpt4 book ai didi

jakarta-ee - Java EE/JPA 集成测试和 Spring 一样的回滚

转载 作者:行者123 更新时间:2023-12-04 01:29:56 73 4
gpt4 key购买 nike

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

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

您如何在 Java EE 中优雅地执行此操作(最少的配置工作,最少的额外内容/资源)?

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

最佳答案

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

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

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

关于jakarta-ee - Java EE/JPA 集成测试和 Spring 一样的回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821891/

73 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com