当您尝试对其运行 JUnit 测试时,不会为独立应用程序加载来自“application.yml”的属性
Posted
技术标签:
【中文标题】当您尝试对其运行 JUnit 测试时,不会为独立应用程序加载来自“application.yml”的属性【英文标题】:properties from 'application.yml' not loading for standalone application when you try to run JUnit Test against it 【发布时间】:2021-05-15 22:51:16 【问题描述】:当您将其作为 Spring Boot 应用程序运行并从 src/main/resources/application.yml
加载属性时,我的类应用程序运行良好,如下所示
class abc
@Value("$spring.host")
private String host;
private ConnectionFactory getConnection()
ConnectionFactory factory = new ConnectionFactory();//constructs Connection instances
factory.setHost(host);
return factory;
下面是application.yml的详细信息
spring.host: xx.xx.xx.1
但是当您尝试针对上述class abc
运行junit 测试时,它不会从src/main/resources/application.yml
上传属性。甚至我也在test目录下创建了一个测试文件application.yml
src/test/resources/application.yml
有以下详细信息
spring.host: xx.xx.xx.1
下面是我的 Junit 测试类详细信息
@RunWith(SpringRunner.class)
@TestPropertySource(properties = "spring.config.location=classpath:application.yml" )
@TestPropertySource(properties = "spring.test1= xx.xx.xx.2",
"spring.test2= 1111"
)
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class )
public class Testclass
InjectMocks
private abc ab;
@Value("$spring.test1") /// here it is getting uploaded from src/main/resources/application.yml
private String test1;
@Test
public void testExecute() throws Exception
abc.getConnection();
我很难理解和调试为什么 JUnit 无法使用相同的配置来从 application.yml 加载属性,但是当简单地将 abc
类作为您的独立应用程序运行时它运行良好。
【问题讨论】:
【参考方案1】:你在 abc 中的使用
@Value("$spring.host")
但是在 application.yaml 你有
spring.rabbitmq.host: xx.xx.xx.1
【讨论】:
我更正了,但更新后仍然对 main/resource/application.yml 的属性没有影响以上是关于当您尝试对其运行 JUnit 测试时,不会为独立应用程序加载来自“application.yml”的属性的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Junit 5 使用 Testcontainer 对 Kafka 运行集成测试