在Eclipse / STS中将代码作为Junit测试运行代码时,文件对象创建失败

时间:2018-12-19 22:59:37

标签: java eclipse unit-testing integration-testing filepath

在我的代码中,我正在基于源代码文件夹中文件的相对路径创建File对象。在Tomcat上运行此代码时,一切工作正常。

当我使用STS / Eclipse Run ...运行与JUnit /集成测试完全相同的代码并选择JUnit时,该测试失败,因为它无法基于与运行代码时相同的相对路径来查找文件在Tomcat下。

这是尝试在代码中创建文件的方式:

new File(getClass().getResource(relatativePathToTheFile).toURI())

我试图通过使用以下代码在运行junit测试时首先弄清楚当前路径来解决此问题:

System.out.println(this.getClass().getClassLoader().getResource(".").toURI().toString());

它告诉我,在将代码作为集成测试的一部分运行时,当前文件夹应为c:\ CODE \ myProjectName \ bin \ main。

我要从代码访问的文件在这里:c:\ CODE \ myProjectName \ src \ main \ webapp \ WEB-INF \ resources \ NameOfTheFile.test

基于此,我将正在运行的代码中使用的相对路径更新为: /../../ src / main / webapp / WEB-INF / resources /

通过“ /../../”,我试图遍历到根文件夹的两个步骤,然后从那里开始导航到资源文件夹。由于某些原因,即使此更新也不能解决问题-我很确定路径是正确的。

也许由于某种原因,在运行单元测试时,该路径只是不可访问的。也许要完成一些Gradle配置或STS / Junit配置。

我所有的集成测试都位于文件夹../src/integrationTest中。我所有的代码都是从../ src / main /

开始的文件夹结构中

1 个答案:

答案 0 :(得分:0)

我最终通过将文件重新放置在src / main / resources下来解决了这个问题。以前,它们完全不在此文件夹中。之后,在Tomcat下或通过STS Junit测试运行器运行代码时,相同,更新的相对文件路径将起作用。