Как получить тестовый файл ресурсов?

В unit test мне нужно импортировать файл csv. Это находится в папке ресурсов, то есть src/test/resources

Ответ 1

Вероятно, просто полезно, если у вас есть файл, например, при выполнении модульных тестов - это не будет загружать его из 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

Ответ 2

Вы можете получить доступ к ресурсам тестирования с помощью текущего загрузчика классов потоков:

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

Ответ 3

с guava

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

Ответ 4

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

так как Apache Commons IO 2.1.

Ответ 5

Это решение не нуждается в 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");

Ответ 6

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

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