에 파일 data.xml
이 src/test/resources/
있습니다.
FileReader
내 테스트 data.scala
에서 해당 파일을 새 파일로 어떻게 읽을 수 src/test/scala/
있습니까?
답변
자원은 getResource
Java가 제공 하는 특수 스타일 메소드를 사용하여 액세스 해야합니다. 당신의 예를 감안할 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
이제는 일반적인 스칼라 IO 객체이므로 내용을 읽고 테스트 데이터로 사용하는 등 원하는 모든 작업을 수행 할 수 있습니다.
리소스를 얻는 다른 방법 (예 : 스트림)도 있습니다. 자세한 정보 getResource
는 Java Docs : Class 의 메소드 를 참조하십시오 .
답변
다른 대안 (특히으로 리소스에 액세스해야하는 경우 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
. 그렇지 않으면 하위 디렉토리를 추가하십시오.
답변
그리고 Google Guava에서 getClass.getResource
작동하지 않는 경우 (정확한시기 또는 이유를 정확히 알지 못하거나 걱정하지 않는 경우)com.google.common.io.Resources.getResource
testCompile "com.google.guava:guava:18.0"
답변
테스트 중에 파일 시스템의 위치를 알기 위해 더미 테스트에서 다음과 같은 작업을 수행 할 수 있습니다.
import scala.collection.JavaConversions._
for(file <- new File(".").listFiles ){
println(file.getAbsolutePath)
}
그런 다음 경로를 알면 테스트에서 다음과 같이 사용할 수 있습니다.
new File("./src/test/resources/yourfile.xml")