gpt4 book ai didi

java - 从 yml 加载属性文件作为 JUNIT 中的 Factory Bean

转载 作者:行者123 更新时间:2023-12-01 21:28:48 24 4
gpt4 key购买 nike

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

最佳答案

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

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

关于java - 从 yml 加载属性文件作为 JUNIT 中的 Factory Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58818160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com