为什么我无法在Maven中使用Junittesting来访问src / test / resources?
我有一个问题运行下面的代码:
configService.setMainConfig("src/test/resources/MainConfig.xml");
从一个Junit @Before方法中。
这是Maven构build目标文件夹的方式吗?
直接访问MainConfig.xml
。 src/test/resources
目录内容放置在CLASSPATH的根目录下。
更确切地说: src/test/resources
被复制到target/test-classes
,所以如果你有以下的项目结构:
. └── src └── test ├── java │ └── foo │ └── C.java └── resources ├── a.xml └── foo └── b.xml
这将导致与以下testingCLASSPATH内容:
-
/foo/C.class
-
/a.xml
-
/foo/b.xml
要实际访问Java源文件,使用getClass().getResource("/MainConfig.xml").getFile()
。
我猜setMainConfig
期望资源的path,它会加载使用ClassLoader,而不是一个相对的文件path。 如果你链接到这个神秘的configService.setMainConfig
方法的javadoc将会有所帮助。
如果我的猜测是正确的,那么path应该是MainConfig.xml。 Mave将src/test/resources
的内容复制到target/test-classes
(IIRC)文件夹中。 而这个test-classes文件夹位于unit testing的类path中。