运行JUnit测试时找不到资源文件

时间:2015-01-22 16:26:50

标签: java maven junit

我在运行JUnit测试时遇到问题,因为无法找到项目资源而失败。

我的测试启动了一个服务器,它使用URLClassLoader加载所有需要的资源。我在运行项目时没有找到资源没有问题。只有在我尝试运行JUnit测试时才会出现此问题。

我尝试在我的运行时配置中添加文件路径作为参数进行测试,例如:

-cp .:/path/to/the/config/file 

但它没有任何区别。

请帮忙!

项目结构: enter image description here

2 个答案:

答案 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);
    ...
}

这使得错误处理变得更加简单。此外,它允许在测试中以及稍后的生产中使用不同的配置文件。