【问题标题】:How to isolate the integration Tests?如何隔离集成测试?
【发布时间】:2018-12-04 01:36:39
【问题描述】:

当在许多集成测试中进行数据库操作时,如何以自动方式(使用某些框架)确保数据库的状态在任何测试之前和之后是相同的?

我对手动方式不感兴趣(@Before@After

【问题讨论】:

  • 您可以将事务提交设置为false。
  • 它可以忽略一些数据库约束
  • 可以使用@Sql注解吗?编写一个重新创建数据库状态的 sql 脚本,并且该注解将在每次测试之前执行它,因此每次测试都会有相同的状态。

标签: java spring-boot junit integration-testing


【解决方案1】:

我们在我公司所做的是

  1. 我们使用事务来确保测试后数据库处于与之前相同的状态。
  2. 我们使用测试脚本来确保有效的测试数据(例如,针对特定测试场景在某些表中插入一些额外的行,同时更新其他一些)。您可以在 setUp 方法中执行这些脚本,以便多个测试用例重用它们,甚至可以在可供多个测试套件重用的实用程序类中定义它们。

这在许多情况下都可以正常工作,但是,如果您尝试测试应用程序中使用嵌套事务的部分,则可能会出现问题。

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多