【问题标题】:Loading properties file from yml as Factory Bean in JUNIT从 yml 加载属性文件作为 JUNIT 中的工厂 Bean
【发布时间】:2019-11-12 11:54:02
【问题描述】:

我的 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 来读取这些属性,但是在运行测试 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 {}    

【问题讨论】:

    标签: java spring junit


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 2018-10-08
      • 2012-02-19
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多