【问题标题】:Is it advisable to have sequential integration tests?进行顺序集成测试是否可取?
【发布时间】:2020-02-22 02:57:42
【问题描述】:
我是集成测试的新手,目前正在使用 SpringBootTest。
我从示例中大致收集到的信息是,每种方法都是一个集成测试(对应于一个 REST 调用)。
但是,如果我想测试一个包含一系列步骤的场景怎么办?比如创建用户->更新用户->删除用户。
也许这不叫集成测试?如果是这样,我如何将这些链接到 SpringBootTest 中?
【问题讨论】:
标签:
spring-boot
junit
integration-testing
spring-boot-test
【解决方案1】:
好吧,在那个测试级别有一个测试订单是可以的,我的意思是级别是这样的:
单元测试 -> 组件测试 -> 集成测试 -> 端到端测试。
当您向右移动时,测试的设置和执行会更加复杂。
在我看来,您描述的测试是集成测试,因此,有顺序是可以的,但是,您应该尽量避免增加复杂性,例如,使用像 H2 这样的模拟内存数据库,并在您使用时填充它正在测试,帮助很大。
由于数据库在内存中,您无需清理或恢复该数据库的状态,测试完成后数据就会消失。
现在,您需要注意测试方法的顺序。 JUnit5 使用了一个新的注解@TestMethodOrder 而JUnit4 使用了@FixMethodOrder,这不是很可定制,你可以找到更多信息here
最后,我建议使用更多与 BDD 相关的东西,例如 Cucumber 进行此类测试