Spring boot 如何使SpringBoot应用程序和测试使用相同的路径解析服务?
自定义类Spring boot 如何使SpringBoot应用程序和测试使用相同的路径解析服务?,spring-boot,intellij-idea,junit,Spring Boot,Intellij Idea,Junit,自定义类PathConfigurationService将运行应用程序的当前路径设置为C:\project。但由于测试位于模块x内部,它的user.dir系统属性与主应用程序不同,因此返回C:\project\moduleX,从而使PathConfigurationService生成到外部文件夹数据的错误路径如何使测试拾取正确的数据文件夹路径 - data - fileA - fileB - core -src/main/java -PathConfig
PathConfigurationService
将运行应用程序的当前路径设置为C:\project
。但由于测试位于模块x内部,它的user.dir
系统属性与主应用程序不同,因此返回C:\project\moduleX
,从而使PathConfigurationService
生成到外部文件夹数据的错误路径如何使测试拾取正确的数据
文件夹路径
- data
- fileA
- fileB
- core
-src/main/java
-PathConfigurationService
-src/test/java
- AbstractTest
- moduleX
-src/test/java
- Test(extending AbstractTest)
ModuleX测试:
@ActiveProfiles("test")
@SpringBootTest(classes = SpringBootApplication11.class)
@ContextConfiguration(classes = SpringBootApplication11.class,
initializers = ConfigFileApplicationContextInitializer.class)
class Test extends AbstractTest {
@Autowired
SpringBootApplication11 app;
}
抽象测试:
@ExtendWith(SpringExtension.class)
public abstract class AbstractTest {
@Test
void test() {
}
}
您应该使用资源文件夹
事实上,这将允许您以相同的方式从源和测试访问数据文件夹
项目的结构可能如下所示:
Project
|-- pom.xml
`-- src
`-- main
`-- java
`-- resources
`-- test
`-- java
`-- resources
在IntelliJ运行/调试配置中,从工作目录
输入框中删除$MODULE\u WORKING\u DIR$
解决了此问题。数据
文件夹位于资源和打包jar之外。这是一项要求。