在单元测试中,我需要导入一个 csv 文件,它位于 resources 文件夹中,即 src/test/resources
import org.apache.commons.io.FileUtils; ... final File dic = FileUtils.getFile("src","test", "resources", "csvFile");
从 Apache Commons IO 2.1开始。
您可以使用当前线程的类加载器访问测试资源:
InputStream stream = Thread.currentThread().getContextClassLoader() .getResourceAsStream("YOURFILE.CSV");
可能只是有用,如果你有可用的文件,例如当做单元测试-这不会加载它从一个 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
加番石榴
import com.google.common.io.Resources; URL url = Resources.getResource("YourFile.csv");
这个解决方案不需要 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 类和资源文件夹中的文件名调用该方法。
File cvsTestFile = TestUtil.GetDocFromResource(getClass(), "MyTestFile.cvs");
// assuming a file src/test/resources/some-file.csv exists: import java.io.InputStream; // ... InputStream is = getClass().getClassLoader().getResourceAsStream("some-file.csv");