Java 在JUNIT中将属性文件作为工厂Bean从yml加载
我的yml中有每个平台电视和android的属性列表 我已经创建了一个工厂类,我们在其中提供平台,您将使用引用链接“”获得属性。 但是在运行测试时,属性对象将显示为null。如何从属性文件加载junit中的属性Java 在JUNIT中将属性文件作为工厂Bean从yml加载,java,spring,junit,Java,Spring,Junit,我的yml中有每个平台电视和android的属性列表 我已经创建了一个工厂类,我们在其中提供平台,您将使用引用链接“”获得属性。 但是在运行测试时,属性对象将显示为null。如何从属性文件加载junit中的属性 @Component public class MasterPropertiesFactory { @Autowired private TvProperties tv ; @Autowired private AndroidProperties an
@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来读取这些属性,但在运行测试getPaginatedContent时,它将显示为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
和androidproperty
PageTest
-ContextConfiguration
中使用该类,或者应该为测试声明自定义Configuration
类以加载属性李>
@ContextConfiguration(classes={TestApp.class,MasterPropertiesFactory.class}
不是一个好主意,因为它应该包含有关配置
类的信息@Autowired
MasterPropertiesFactory MasterPropertiesFactory;
您应该在某个地方为此创建bean(首选的方法是在测试Conifugration
)