在JUNIT中以Factory Bean的形式从yml加载属性文件



我的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 {}    

您应该在代码中修复以下几点:

  1. 应该有Configuration类用于创建TvPropertiesAndroidProperties
  2. 您应该在PageTest-ContextConfiguration中使用该类,或者您应该为测试声明自定义Configuration类,以加载属性
  3. @ContextConfiguration(classes = {TestApp.class ,MasterPropertiesFactory.class }不是一个好主意,因为它应该包含有关Configuration类的信息
  4. 对于@Autowired MasterPropertiesFactory masterPropertiesFactory;,您应该为此创建bean(首选方式是在测试Conifugration中(

最新更新