Maven Java项目单元测试如何跨目录读取application.properties
解决Maven多模块测试读取跨模块属性文件的问题
方法一:通过Maven依赖引入application模块资源
在folder2模块的pom.xml中,添加对application模块的测试依赖,让Maven自动将application模块的资源纳入folder2的测试类路径:
<dependencies> <dependency> <groupId>你的项目groupId</groupId> <artifactId>application</artifactId> <version>项目版本号</version> <scope>test</scope> <!-- 限定仅测试阶段生效 --> </dependency> </dependencies>
添加后,原测试类的@TestPropertySource("classpath:application.properties")注解可直接生效,无需复制文件。
方法二:用Maven资源插件复制跨模块文件
若不想添加依赖,可在folder2模块的pom.xml中配置maven-resources-plugin,在测试资源处理阶段自动复制目标文件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>copy-shared-properties</id> <phase>process-test-resources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.testOutputDirectory}</outputDirectory> <resources> <resource> <directory>../application/src/main/resources</directory> <includes> <include>application.properties</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build>
执行mvn test时,插件会自动把application模块的属性文件复制到folder2的测试类路径下。
方法三:指定文件绝对路径(不推荐)
可直接在注解中写文件的本地绝对路径,但该方式依赖本地项目结构,移植性差,仅适合临时测试:
@TestPropertySource("file:../application/src/main/resources/application.properties")
内容的提问来源于stack exchange,提问作者cucuru
相关产品推荐
相关产品推荐

