data.xml
にsrc/test/resources/
というファイルがあります。
そのファイルをテストの新しいFileReader
にdata.scala
のsrc/test/scala/
に読み込むにはどうすればよいですか?
リソースは、Javaが提供する特別なgetResource
スタイルメソッドを使用してアクセスすることを意図しています。 data.xml
にある$SBT_PROJECT_HOME/src/test/resources/
の例を考えると、次のようなテストでアクセスできます。
import scala.io.Source
// The string argument given to getResource is a path relative to
// the resources directory.
val source = Source.fromURL(getClass.getResource("/data.xml"))
もちろんsource
は通常のScala IOオブジェクトであるため、コンテンツの読み取りやテストデータでの使用など、必要な処理を実行できます。
リソースを取得する他の方法(ストリームなど)もあります。詳細については、 Java Docs:Class のgetResource
メソッドを参照してください。
別の代替手段(特にFile
としてリソースにアクセスする必要がある場合);次の方法でパスを取得します。
val path = getClass.getResource("/testData.txt").getPath
val file = new File(path)
sbtはsrc/test/resources
からtarget/scala-[scalaVersion]/test-classes
にファイルをコピーします。
次のように、テストのリソースにアクセスできます。
Source.fromURL(getClass.getResource("/testData.txt"))
testData.txt
がフォルダーsrc/test/resources
の直下にあると想定しています。それ以外の場合は、サブディレクトリを追加します。
また、getClass.getResource
が機能しない場合(いつ、なぜ正確にわからないか気にしないでください)、Google Guavaのcom.google.common.io.Resources.getResource
は通常機能します
testCompile "com.google.guava:guava:18.0"