在每次测试之前,我应该如何重置JPA控制的数据库?

Hen*_*ryR 5 java testing integration-testing hibernate jpa

在单元测试之前,是否有最佳实践模式将数据库完全重置为使用JPA的新铺设模式?我一直在使用带有hbml2ddl.auto = create-or-drop的测试持久性单元并在每次测试之前重新创建EMF,但我想知道是否有更简洁的方法来执行它.

Jav*_*mae 1

单元测试不应该与数据库对话。

假设您正在为数据访问层编写集成测试,您可以使用DBUnit这样的工具,或者您可以创建一个静态测试助手,通过在一个 JPA 查询中执行所有删除和插入操作,以编程方式重置数据库状态。交易。

  • 我想理由是“单元”测试应该单独测试“单元”。一旦涉及数据库,您就不再进行单元测试,而是进行集成测试。它与使用的数据库类型无关。 (8认同)
  • 如果它与数据库交互,则不称为单元测试,而是集成测试。一旦你进入这种心态,你就会意识到单元测试并没有你以前想象的那么有用。给定的“单元测试”一次仅测试一个方法/类。如果您的测试链接到其他“单元”,则它是集成测试或系统测试。集成测试通常也使用 JUnit 运行,因此通常称为单元测试。 (2认同)