用于集成测试的java Springboot默认配置文件
SpringBoot利用了Spring profiles,例如,它允许对不同的环境进行单独的配置。 我使用此功能的一种方法是配置集成测试使用的测试数据库。 我想知道是否有必要创建自己的配置文件“test”,并在每个测试文件中显式激活此配置文件? 现在我用以下方法来做:
创建应用程序测试。src/main/resources中的属性
在那里编写特定于测试的配置(现在只需数据库名称)
在每个测试文件中,包括:
@ActiveProfiles("test")
有没有更聪明/更简洁的方法?例如,默认测试配置文件
编辑1:这个问题与Spring Boot 1.4.1有关
# 1 楼答案
如果您使用maven,可以将其添加到pom中。xml:
然后,maven应该使用这个arugument运行您的集成测试(*IT.java),IntelliJ也将从激活这个概要文件开始,这样您就可以指定其中的所有属性
您不应该需要“-default”属性
# 2 楼答案
这样做的一种方式(事实上,与@Compito的原始答案相比有点小差距):
test/resources/application-default.properties
中设置spring.profiles.active=test
李>test/resources/application-test.properties
,并仅覆盖所需的属性李># 3 楼答案
你可以提出申请。测试/资源文件夹中的属性文件。你准备好了
这是运行测试时的一种默认测试配置文件
# 4 楼答案
到2021和Spring Bug 2.4,我发现的解决方案是有3个属性文件
src/main/resources/application.yml
-包含应用程序的默认道具src/test/resources/application.yml
-将配置文件设置为“test”,并从“main”导入属性src/test/resources/application-test.yml
-包含特定于测试的配置文件,它将覆盖“main”以下是
src/test/resources/application.yml
的内容:例如,如果
src/main/resources/application.yml
具有而且{}已经
然后(假设没有其他配置文件)
运行测试时
以及在正常运行应用程序时
注意:如果
src/main/resources/application.yml
包含spring.profiles.active: "dev"
,则不会被src/test/resources/application-test.yml
覆盖# 5 楼答案
另一种方法是定义实际测试类将扩展的基本(抽象)测试类:
混凝土试验:
这允许您提取的不仅仅是
@ActiveProfiles
注释。您还可以为不同类型的集成测试想象更专业的基类,例如数据访问层与服务层,或功能性专业(通用@Before
或@After
方法等)# 6 楼答案
据我所知,没有任何东西可以直接满足您的要求,但我可以提出一个有助于:
您可以使用自己的测试注释,它是由
@SpringBootTest
和@ActiveProfiles("test")
组成的meta annotation。因此,您仍然需要专用的概要文件,但避免将概要文件定义分散到所有测试中此注释将默认为概要文件
test
,您可以使用元注释覆盖概要文件