如何获得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");