我有以下单元测试类,它将一些测试数据文件作为类路径资源引用:
package com.altanqa.project.parser;
public class ParserTest {
private static final URL VALID_DIR = ParserTest.class.getResource("testData-VALID");
private static final URL INVALID_DIR = ParserTest.class.getResource("testData-INVALID");
private static final URL MISSING_DIR = ParserTest.class.getResource("testData-MISSING");
// ...
}
此处引用的目录结构如下所示:
src/test/java/com/altanqa/project/parser
ParserTest.java
src/test/resources/com/altanqa/project/parser
testData-VALID
data
test-data.txt
testData-INVALID
data
test-data.txt
testData-MISSING
data
正在测试的Parser获取一个目录,并且知道要查看data/testData.txt
。这里的测试类运行解析器,为其提供有效数据,无效数据和缺失数据,以检查解析器是否正确处理每种情况。有效和无效数据工作正常,但MISSING
URL为空。如果我在a.txt
中放置了不同的文件(例如test-data-MISSING
),则URL已正确初始化,但目录中没有任何文件,则为空。这是类加载器的特点吗?有没有解决方法,即正确地MISSING_DIR
URL初始化,即使其子目录中没有任何内容?
谢谢!
答案 0 :(得分:0)
Boris强调说这是一个Maven问题,而不是任何与Java有关的问题。复制资源时,需要将maven-resources-plugin
配置为包含空目录。在pom:
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
...
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
...
</plugin>
</plugins>
</build>