如何获取测试资源文件?

sim*_*ico 58 java testing resources surefire maven

在单元测试中,我需要导入一个csv文件.它位于资源文件夹中,即src/test/resources

Ama*_*icA 64

如果您有可用的文件,例如在进行单元测试时,这可能非常有用 - 这不会从jar AFAIK中加载它.

URL url = Thread.currentThread().getContextClassLoader().getResource("mypackage/YourFile.csv");
File file = new File(url.getPath());
// where the file is in the classpath eg. <project>/src/test/resources/mypackage/YourFile.csv
Run Code Online (Sandbox Code Playgroud)

  • 我真正想要的是提供文件路径的抽象,就像在getResourceAsStream中一样.否则新的File/getFile更直接 (2认同)
  • 使用该语句,我的 url 为空 (2认同)

Rus*_*ard 21

您可以使用当前线程的类加载器访问测试资源:

InputStream stream = Thread.currentThread().getContextClassLoader()
    .getResourceAsStream("YOURFILE.CSV");
Run Code Online (Sandbox Code Playgroud)

  • 但我想要一个 java.io.File 而不是 InputStream。 (2认同)

Dav*_*ang 12

用番石榴

import com.google.common.io.Resources;
URL url = Resources.getResource("YourFile.csv");
Run Code Online (Sandbox Code Playgroud)


Abd*_*ull 7

// assuming a file src/test/resources/some-file.csv exists:

import java.io.InputStream;
// ...
InputStream is = getClass().getClassLoader().getResourceAsStream("some-file.csv");
Run Code Online (Sandbox Code Playgroud)