有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Eclipse/STS中以Junit测试方式运行代码时,java文件对象创建失败

在我的代码中,我将根据源代码文件夹中文件的相对路径创建一个文件对象。在Tomcat下运行这段代码时,一切都很完美

当我使用STS/Eclipse运行与JUnit/integration测试完全相同的代码时。。。如果选择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\nameoff文件。试验

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

通过“/…/。/”我尝试朝着根文件夹跨两步,并从那里开始导航到资源文件夹。出于某种原因,即使是这次更新也没有解决这些问题——我很确定这条路是正确的

也许,出于某种原因,当运行单元测试时,路径就是不可访问的。也许,需要进行一些Gradle配置或STS/Junit配置来解决这个问题

我的所有集成测试都在文件夹中/src/integrationTest。我的所有代码都在从..开始的文件夹结构中/总工程师/总工程师/


共 (1) 个答案

  1. # 1 楼答案

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