使用Sping Boot JUnit测试,如何从不同的maven模块访问配置yaml?

c90pui9n  于 2023-10-20  发布在  Maven
关注(0)|答案(1)|浏览(124)

我有以下spring Boot 项目,以maven模块组织:

RootModule
--ChildModule1
----ChildModule1_1/src/main/resources/my-config.yml
--ChildModule2
----ChildModule2_1
------src/main/java/mypackage/MyClass.java
------src/test/java/mypackage/MyClassTest.java

MyClass可以使用my-config.yml中的属性:

@Configuration
@ConfigurationProperties
public class MyClass {...}

MyClassTest无法使用这些属性,即使使用下面的注解:

@EnableConfigurationProperties
@TestPropertySource(properties = {"spring.config.location=classpath:my-config.yml"})
@ExtendWith{SpringExtension.class}
public class MyClassTest {...}

当我尝试在MyClassTest类中运行测试时,它抛出一个错误,因为它在类路径中找不到my-config.yml。如果我将my-config.yml复制到下面的文件夹中,它就可以工作了:ChildModule2_1 src/test/resources/my-config.yml
我不想把my-config.yml放在src/test/resources中,因为这意味着项目中有两个配置相同的文件,这不是一个好的设计决策。
为什么我的MyClass在类路径中找到了my-config.yml,而不是MyClassTest?

hgc7kmma

hgc7kmma1#

我最终将MyClassTest复制到ChildModule1中,这个解决方案解决了我的问题。

相关问题