【问题标题】:Testing problem, test order and auto increment测试问题、测试顺序和自动增量
【发布时间】:2020-04-23 11:51:24
【问题描述】:

我在春季进行集成测试。我目前正在测试控制器层,遇到一个需要帮助的问题。

我现在有几个功能,比如 crud 操作等等。
问题在于使用集成测试进行测试时,它涉及测试顺序和自动增量
在测试数据库(mysql数据库)中。

当我一个接一个地运行测试时,它们都可以工作并且成功,但是当我一次运行所有东西时,
关于测试类,因为执行顺序,几次测试都有错误。

例如,首先执行添加测试。在其中,添加之后,当然,我删除了我添加到数据库中的项目,但这不会重新启动自动增量,这代表其他测试中的问题。

我通过修改其他测试解决了这个问题,但我认为这不是正确的解决方案。 我希望我很好地解释了问题所在。 这个问题有哪些可能的解决方案?每次测试后是否可以重新启动自动增量。

如果有人能解决这个问题并且有人得救,我将不胜感激。谢谢。

【问题讨论】:

  • 问题是为什么您需要在测试中使用 auto_increment 值
  • 所以我知道我不应该依赖这些值,例如 id,但一个例子是删除操作,我发送我想要删除的项目的 id。

标签: spring spring-boot testing integration-testing


【解决方案1】:

为什么在测试时将数据持久化到数据库中。 (而不是嘲笑)

测试用例执行顺序不固定。我们不应该让一个测试用例依赖于另一个。

在此处查看 CRUD 测试。

https://howtodoinjava.com/spring-boot2/testing/rest-controller-unit-test-example/

【讨论】:

  • 嗯,我正在将数据持久化到数据库中,因为我目前正在进行集成测试。我已经做过单元测试了。
【解决方案2】:

在这里,我不确定,但我认为我找到了解决方案。

我觉得这两种方式都可以用:

借助注释 @DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD) 重新加载应用程序上下文并重新启动所有内容,但会减慢测试的执行速度。

另一种方式是使用sql注解@Sql(statements = "ALTER TABLE role AUTO_INCREMENT = 2")
我们在测试方法之前调用并使用sql语句重新启动自动增量。

我希望您评论一下这个解决方案是否好。当然欢迎任何建议。 谢谢。

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 2020-11-29
    • 2017-10-22
    • 2011-05-04
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多