如何获得testing资源文件?
在unit testing中,我需要导入一个csv文件。 这位于资源文件夹,即src / test / resources
可能只是有用的,如果你有文件可用,例如,当进行unit testing – 这将不会加载它的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
您可以使用当前线程的类加载器来访问testing资源:
InputStream stream = Thread.currentThread().getContextClassLoader() .getResourceAsStream("YOURFILE.CSV");
用番石榴
import com.google.common.io.Resources; URL url = Resources.getResource("YourFile.csv");
import org.apache.commons.io.FileUtils; ... final File dic = FileUtils.getFile("src","test", "resources", "csvFile");
自Apache Commons IO 2.1以来。
这个解决scheme不需要lib的。 首先创build一个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");