我在运行JUnit测试时遇到问题,因为无法找到项目资源而失败。
我的测试启动了一个服务器,它使用URLClassLoader加载所有需要的资源。我在运行项目时没有找到资源没有问题。只有在我尝试运行JUnit测试时才会出现此问题。
我尝试在我的运行时配置中添加文件路径作为参数进行测试,例如:
-cp .:/path/to/the/config/file
但它没有任何区别。
请帮忙!
项目结构:
答案 0 :(得分:2)
默认Maven测试路径为src/test/java
,因此如果您的测试不在该目录中,则必须在pom.xml
中使用标记为<testSourceDirectory>
的{{1}}内定义测试路径}。您还必须包含<build>
。
答案 1 :(得分:1)
Maven中的约定是在src/test/java
中包含所有Java测试代码。这是为了防止在最终产品中意外包含测试代码。所以我建议你移动测试。
由于您没有显示用于加载资源的代码,我无法告诉您是否存在任何错误。但/path/to/the/config/file
很可能是错误的;必须是/path/to/the/config
,所以你可以用Java getClass().getClassLoader().getResource("file")
说。
但我建议使用命令行参数来指定配置文件:
main(String[] args) {
File configFile = new File(args[0]).getAbsoluteFile();
if(!configFile.exists()) throw new IllegalArgumentException("Unable to find config file: " + configFile);
...
}
这使得错误处理变得更加简单。此外,它允许在测试中以及稍后的生产中使用不同的配置文件。