我的yml中有每个平台电视和android 的属性列表
我创建了一个工厂类,我们在其中提供平台,您将使用引用链接获得属性"https://andrewzc.com/loading-configuration-properties-in-spring-boot-test/"。但是在运行测试时,属性对象显示为null。如何从属性文件加载junit中的属性?
@Component
public class MasterPropertiesFactory {
@Autowired
private TvProperties tv ;
@Autowired
private AndroidProperties android ;
public MasterPropertiesClass getProperty(String platform){
if(platform.equals("tv")){
return tv;
}else if(platform.equals("android")){
return android;
}
}
}
现在我正在编写一个junit来读取这些属性,但在运行测试getPaginatedContext时,它显示为null。
//PageTest.java
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {TestApp.class ,MasterPropertiesFactory.class }, initializers = ConfigFileApplicationContextInitializer.class)
class PageTest {
@Autowired
MasterPropertiesFactory masterPropertiesFactory;
@Test
void getPaginatedContent() {
Assert.assertNotNull(masterPropertiesFactory);
}
}
// TestApp.java
@EnableAutoConfiguration
@EnableConfigurationProperties(value = {MasterPropertiesFactory.class })
public class TestApp {}
您应该在代码中修复以下几点:
- 应该有
Configuration
类用于创建TvProperties
和AndroidProperties
- 您应该在
PageTest
-ContextConfiguration
中使用该类,或者您应该为测试声明自定义Configuration
类,以加载属性 @ContextConfiguration(classes = {TestApp.class ,MasterPropertiesFactory.class }
不是一个好主意,因为它应该包含有关Configuration
类的信息- 对于
@Autowired MasterPropertiesFactory masterPropertiesFactory;
,您应该为此创建bean(首选方式是在测试Conifugration
中(