我在 IDEA 中有一个由 maven 管理的项目。我在“src”下为集成测试创建了一个自定义目录,并命名为“intg”:
myproject
|- src
|- intg
|- |- java
|- |- resources
|- main
|- |- java
|- |- resources
|- test
|- java
|- resources
在我的 POM.xml 中,我添加了:
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/target/test-classes</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/intg/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后我在IDEA中重新导入POM.xml,但是发现IDEA并没有把“resources”这个目录当成测试源根目录,所以我手动把它标记为“测试源根”。
然后我将文件“test-data.txt”放入其中,并在我的测试代码中获取它:
@Test
public void shouldGetTheFileFromClasspath() {
URL resource = MyTest.class.getClassLoader().getResource("test-data.txt");
assertNotNull(resource);
}
不幸的是,测试失败了。如果我将“test-data.txt”移动到“src/test/resources”,那么它将通过。
我不确定哪里出了问题以及如何解决。折腾了我一整天,求大神帮忙~