如何获取测试资源文件?

时间:2011-04-03 12:19:33

标签: java testing resources maven surefire

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

6 个答案:

答案 0 :(得分:61)

如果您有可用的文件,例如在进行单元测试时,这可能非常有用 - 这不会从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

答案 1 :(得分:20)

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

InputStream stream = Thread.currentThread().getContextClassLoader()
    .getResourceAsStream("YOURFILE.CSV");

答案 2 :(得分:12)

与番石榴

import com.google.common.io.Resources;
URL url = Resources.getResource("YourFile.csv");

答案 3 :(得分:2)

import org.apache.commons.io.FileUtils;
...
 final File dic = FileUtils.getFile("src","test", "resources", "csvFile");

Apache Commons IO 2.1

答案 4 :(得分:2)

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

import java.io.InputStream;
// ...
InputStream is = getClass().getClassLoader().getResourceAsStream("some-file.csv");

答案 5 :(得分:0)

这个解决方案不需要lib。首先创建一个util类来访问资源文件。

public class TestUtil(Class classObj, String resourceName) throws IOException{
   URL resourceUrl = classObj.getResource(FileSystems.getDefault().getSeparator()+resourceName);
   assertNotNull(resourceUrl);
   return new File(resourceUrl.getFile());
}

现在您只需要使用unitTest的类和ressource文件夹中文件的名称调用该方法。

File cvsTestFile = TestUtil.GetDocFromResource(getClass(), "MyTestFile.cvs");