使用Intellij IDEA时找不到文件

Lip*_*ang 5 java intellij-idea maven

我有一个文件test-mule-flow.xml名下的src/main/app文件,我添加了一个单元测试:

MuleFlowTest extends FunctionalTestCase
@Override
public String getConfigResources() {
    return "src/main/app/test-mule-flow.xml";
}

@Test
public void test......
Run Code Online (Sandbox Code Playgroud)

实际上,当我在Eclipse(Mule Studio)和maven构建中执行时,这些测试都会正确执行,但不幸的是,这些测试在Intellij IDEA版本12中失败了.

而且我认为这是由classloaderIDEA中的源文件驻留在target/classes文件夹中,并且测试类是房子target/test-classes,这可能是原因,但我该如何配置呢?并且它以maven方式更好,我不想手动进行一些移动配置.

谢谢.

JB *_*zet 6

看起来您正在使用相对文件路径来加载文件.因此实际结果将取决于JVM执行测试的目录(它是"当前"目录).

这通常是个坏主意.如果文件应该与应用程序捆绑在一起,则存储它是src/main/resources并使用类加载器加载它:

InputStream in = MuleFlowTest.class.getResourceAsStream("/test-mule-flow.xml"));
Run Code Online (Sandbox Code Playgroud)

如果它是仅由测试使用的文件,则将其存储在src/test/resources中,并使用类加载器加载它(与上面相同).

如果确实需要将其作为文件加载,请确保当前目录始终是正确的,或者传递一个系统属性,告诉代码它应该使用哪个基目录来创建绝对路径.


Unc*_*ter 5

您具有指定的相对路径,并且未提供有关如何实际读取此路径下的文件的信息.

在从类路径中读取的情况下,您应该确保它在那里.对于Maven,有一个将资源置于src\main\resources或下的约定src\test\resources.支持Maven的IDE通常会自动将这些位置添加到类路径中.如果由于某种原因您无法将文件放入resources类路径中包含的其他位置,则可以在IDEA中手动配置项目的源目录.

在从文件系统读取文件的情况下,您应该检查IDEA中相应的运行/调试配置中的工作目录.