我可以使用不同的配置多次运行 `@SpringBootTest` 类吗?

问题描述

我有一个集成测试,它使用 @SpringBoottest 来启动一个测试简单 Spring Boot 应用程序的 Spring 应用程序上下文。我使用 Spock 编写测试,我的构建工具是 Maven。

我正在寻找一种方法,可以使用不同的测试配置多次运行相同的测试类(我有一组配置选项,我需要确保配置选项的某些排列具有一致的行为)。我的第一个想法是使用配置文件来定义确切的排列,也许它也可以通过使用 @TestPropertySource 以某种方式工作。但是,我没有看到任何方法可以多次运行测试类,每次使用不同的配置。

我知道我可以运行 all tests with a given profile,但就我而言,我只想将不同的配置应用于某些测试类。
我还可以使用 where 块重复 here 中描述的 spock 测试,但这不允许我为每次运行切换 spring 配置

解决方法

最简单的方法是使用简单的子类,即在抽象基类中定义所有测试,然后为每个变体将其子类化,并向子类添加必要的注释。如果您只有一组有限的变体,这种方法会很有效,并且可以提供良好的报告反馈,因为每个变体都报告为自己的规范。