gpt4 book ai didi

java - 未读取 junit spring boot 配置文件属性

转载 作者:行者123 更新时间:2023-12-02 12:00:22 25 4
gpt4 key购买 nike

我正在尝试使用 Spring Boot 从 junit 设置中的属性文件中读取值。我无法读取该值。以下是我的内容:-

应用程序测试.properties

my.user.name=Amar

用于创建 bean 的 COnfig 文件:

@Configuration
@ActiveProfiles("test")
@Profile("test")
public class RdbmsTestConfig {

@Value("${my.user.name}")
private String name;

@Bean
public String myString(){
return "Amar";
}

@Bean
public PropsHolder propsHolder() {
PropsHolder propsHolder = new PropsHolder();
propsHolder.setUserName(name);
return propsHolder;
}
}

我的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = RdbmsTestConfig.class)
@ActiveProfiles("test")
public class TestRoomService {

@Autowired
@Qualifier("myString")
private String myString;

@Autowired
private PropsHolder propsHolder;

@Autowired
private Environment env;

@Test
public void userTest() {
Arrays.stream(env.getActiveProfiles()).forEach(System.out::println);
System.out.println(propsHolder.getUserName());
Assert.assertNotNull(myString);
Assert.assertEquals("Amar",myString);
}
}

propsHolder.getUserName 的值为 ${my.user.name}

最佳答案

首先从您的类RdbmsTestConfig中删除@ActiveProfiles("test")。然后您的测试只需将 RdbmsTestConfig 定义为 spring 上下文。正如我所看到的,您没有运行真正的 Spring Boot 测试。问题是您的 spring 配置中没有配置任何 PropertyPlaceholderConfigurer 。因此,如果您有任何 SpringBootApplication,请配置一个 PropertyPlaceholderConfigurer 或将 @SpringBootTest 添加到您的测试中。

关于java - 未读取 junit spring boot 配置文件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303605/

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