Dans un test unitaire, j'ai besoin d'importer un fichier csv. Il se trouve dans le dossier des ressources, c'est-à-dire src/test/resources
Probablement juste utile si vous avez le fichier disponible, par exemple lorsque vous effectuez des tests unitaires - cela ne le chargera pas dans un bocal 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
Vous pouvez accéder aux ressources de test à l'aide du chargeur de classe du thread actuel:
InputStream stream = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("YOURFILE.CSV");
à la goyave
import com.google.common.io.Resources;
URL url = Resources.getResource("YourFile.csv");
// 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");
depuis Apache Commons IO 2.1 .
Cette solution n'a pas besoin de lib's. Créez d'abord une classe util pour accéder aux fichiers de ressources.
public class TestUtil(Class classObj, String resourceName) throws IOException{
URL resourceUrl = classObj.getResource(FileSystems.getDefault().getSeparator()+resourceName);
assertNotNull(resourceUrl);
return new File(resourceUrl.getFile());
}
Il ne vous reste plus qu'à appeler la méthode avec la classe de votre unitTest et le nom de votre fichier dans le dossier ressource.
File cvsTestFile = TestUtil.GetDocFromResource(getClass(), "MyTestFile.cvs");