在 SpringBootTest properties 属性中包括 属性 列表
Including property lists in SpringBootTest properties attribute
所以我发现SpringBootTest允许将属性注入到测试文件中,这样测试文件中的数据就可以被覆盖,从而使属性文件中的生产数据如:
属性文件
data.test1 = Production data 1
data.test2 = Production data 2
可以用测试文件中的测试数据覆盖如:
测试文件
@SpringBootTest(properties = {
"data.test1=Test data 1",
"data.test2=Test data 2"})
我的问题是我的属性文件中有列表。有什么方法可以将列表注入 SpringBootTest 属性属性,如下面的数据?
带有列表的属性文件
data-list:
- id: 1
data: Prod data 1
other-data: Other prod data 1
- id: 2
data: Prod data 2
other-data: Other prod data 2
有两种方法:
1:你可以这样覆盖
@SpringBootTest(properties = {
"data-list[0].id=1",
"data-list[0].data=data",
"data-list[0].other-data=data",
"data-list[1].id=1",
"data-list[1].data=data",
"data-list[1].other-data=data"})
2: 在测试文件夹下创建一个资源文件夹并覆盖 application.properties 或 yaml 文件,Spring 启动测试将选择过度干燥的文件而不是你的主应用程序文件
所以我发现SpringBootTest允许将属性注入到测试文件中,这样测试文件中的数据就可以被覆盖,从而使属性文件中的生产数据如:
属性文件
data.test1 = Production data 1
data.test2 = Production data 2
可以用测试文件中的测试数据覆盖如:
测试文件
@SpringBootTest(properties = {
"data.test1=Test data 1",
"data.test2=Test data 2"})
我的问题是我的属性文件中有列表。有什么方法可以将列表注入 SpringBootTest 属性属性,如下面的数据?
带有列表的属性文件
data-list:
- id: 1
data: Prod data 1
other-data: Other prod data 1
- id: 2
data: Prod data 2
other-data: Other prod data 2
有两种方法:
1:你可以这样覆盖
@SpringBootTest(properties = {
"data-list[0].id=1",
"data-list[0].data=data",
"data-list[0].other-data=data",
"data-list[1].id=1",
"data-list[1].data=data",
"data-list[1].other-data=data"})
2: 在测试文件夹下创建一个资源文件夹并覆盖 application.properties 或 yaml 文件,Spring 启动测试将选择过度干燥的文件而不是你的主应用程序文件