Spring-boot使用Spring配置文件(http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html),它允许例如为不同的环境分别配置 . 我使用此功能的一种方法是配置测试数据库以供集成测试使用 . 我想知道是否有必要创建我自己的配置文件'test'并在每个测试文件中明确激活此配置文件?现在我用以下方式做到:
-
在src / main / resources中创建application-test.properties
-
在那里编写测试特定配置(现在只是数据库名称)
-
在每个测试文件中包括:
@ActiveProfiles("test")
有更聪明/更简洁的方式吗?例如,默认测试配置文件?
编辑1:这个问题与Spring-Boot 1.4.1有关
5 回答
据我所知,没有任何内容可以直接解决您的请求 - 但我可以建议一个可以提供帮助的提案:
您可以使用自己的测试注释,该注释是meta annotation,包含
@SpringBootTest
和@ActiveProfiles("test")
. 因此,您仍然需要专用配置文件,但避免在所有测试中分散配置文件定义 .此注释将默认为配置文件
test
,您可以使用元注释覆盖配置文件 .另一种方法是定义实际测试类将扩展的基类(抽象)测试类:
具体测试:
这允许您提取的不仅仅是
@ActiveProfiles
注释 . 您还可以想象针对不同类型的集成测试的更专业的基类,例如数据访问层与服务层,或功能专业(常见的@Before
或@After
方法等) .您可以将application.properties文件放在test / resources文件夹中 . 在那里你设置
这是运行测试时的默认测试配置文件 .
在我的情况下,我有不同的application.properties取决于环境,如:
和application.properties包含一个属性spring.profiles.active来选择适当的文件 .
对于我的集成测试,我在
test/resources
中创建了一个新的application-test.properties
文件,并使用@TestPropertySource({ "/application-test.properties" })
注释这是负责根据我对这些测试的需求选择我想要的application.properties的文件另一种编程方式:
它很棒 .