web-dev-qa-db-ja.com

テストリソースファイルを取得する方法

単体テストでは、csvファイルをインポートする必要があります。これはリソースフォルダー、つまりsrc/test/resourcesにあります

57
simpatico

おそらく単体テストを行うときなど、ファイルを使用できる場合に便利です。これは、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
63
AmanicA

現在のスレッドのクラスローダーを使用してテストリソースにアクセスできます。

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

グアバと

import com.google.common.io.Resources;
URL url = Resources.getResource("YourFile.csv");
12
// assuming a file src/test/resources/some-file.csv exists:

import Java.io.InputStream;
// ...
InputStream is = getClass().getClassLoader().getResourceAsStream("some-file.csv");
2
Abdull
import org.Apache.commons.io.FileUtils;
...
 final File dic = FileUtils.getFile("src","test", "resources", "csvFile");

以来 Apache Commons IO 2.1

2
simpatico

このソリューションは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");
0
swissonid