java - 是否有正确的方法让 util 方法找到测试资源路径?

标签 java csv path

我正在编写一个小测试来读取 CSV 文件(使用 testng)。 我找到了一些代码来执行此操作,还有一些其他行来查找资源文件夹本身。

现在,当我在其他场景中重复使用它时,我认为我可以创建一个 util 方法而不是复制粘贴:

public static String prepFilepath(Class c) {

    URL url = c.getResource("");
    String location = url.getPath();

    String packageName = c.getPackage().getName().replace(".", "/");

    int l = location.lastIndexOf(packageName);
    return location.substring(0, l);
}

我的测试是这样调用它的:

@Test
public void testImport(){
    File testFile = new File(ImportUtils.prepFilepath(this.getClass()), inputFileName);
    //...
}

但是我不知道这样做是否正确:

  • 可以将类引用作为参数传递吗? (我以前从来没有为了这么小的目的这样做过)
  • 还有更优雅的方式吗?
  • 它是否足够通用以证明该实用程序的合理性?

编辑: 我正在使用 testng

最佳答案

如果文件与类在同一个包中,那么我们可以通过这种方式获取文件的 URL

URL url = getClass().getResource(fileName);

如果我们需要从 URL 中获取文件,我们可以这样做

File file = new File(url.toURI());

关于java - 是否有正确的方法让 util 方法找到测试资源路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27403737/

相关文章:

java - FacesMessage 不接受浏览器 clientID

java - 如何在不同进程中运行两个 Activity

csv - 使用 Awk 命令行打印以逗号分隔的列

python - 比较 2 个文本文件中的行

python - 如何在公共(public)列上合并多个 csv 文件并将非公共(public)文件保留为单独的列?

ruby - geany 终端和用户 gnome 终端中 ruby​​ 的不同路径

ios - Swift 3.0 使用 write(toFile : atomically:) 写入二进制图像数据

java - 文件在 Java 中复制自身

Java,矩阵溢出

ruby-on-rails - 如何重定向到 root - public/index.html?