【发布时间】:2011-04-03 12:19:33
【问题描述】:
在单元测试中,我需要导入一个 csv 文件。它位于资源文件夹中,即 src/test/resources
【问题讨论】:
-
在这里找到了简单的解决方案(Java7+):stackoverflow.com/a/42375654/1579667
标签: java testing resources maven surefire
在单元测试中,我需要导入一个 csv 文件。它位于资源文件夹中,即 src/test/resources
【问题讨论】:
标签: java testing resources maven surefire
如果您有可用的文件,例如在进行单元测试时,可能会很有用 - 这不会从 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
【讨论】:
src/test/resources 部分。 (如果找不到文件,getResource 返回 null)
new File(url.toURI());来正确处理文件路径中的空格。
您可以使用当前线程的类加载器访问测试资源:
InputStream stream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("YOURFILE.CSV");
【讨论】:
用番石榴
import com.google.common.io.Resources;
URL url = Resources.getResource("YourFile.csv");
【讨论】:
java.io.File,这个答案可以继续:File csvFile = new File( url.toURI() );
// assuming a file src/test/resources/some-file.csv exists:
import java.io.InputStream;
// ...
InputStream is = getClass().getClassLoader().getResourceAsStream("some-file.csv");
【讨论】:
import org.apache.commons.io.FileUtils;
...
final File dic = FileUtils.getFile("src","test", "resources", "csvFile");
【讨论】:
这个解决方案不需要 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");
【讨论】: