Как получить доступ к тестовым ресурсам?
у меня есть файл data.xml
на src/test/resources/
.
как я могу прочитать этот файл в новый FileReader
в моем тесте data.scala
на src/test/scala/
?
5 ответов:
ресурсы предназначены для доступа с помощью специального
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
теперь это просто обычный объект Scala IO, поэтому вы можете делать с ним все, что хотите, например, читать содержимое и использовать его для тестовых данных.есть и другие способы получения ресурса (например, в виде потока). Для получения дополнительной информации смотрите на
getResource
методы Java Docs: Class.
sbt копирует файлы из
src/test/resources
totarget/scala-[scalaVersion]/test-classes
.вы можете получить доступ к ресурсам в ваших тестах следующим образом:
Source.fromURL(getClass.getResource("/testData.txt"))
Он предполагает, что
testData.txt
был прямо под папкойsrc/test/resources
. В противном случае добавьте любые подкаталоги.
Другой альтернативой (особенно если вам нужно получить доступ к ресурсу, как
File
); чтобы получить его путь через:val path = getClass.getResource("/testData.txt").getPath val file = new File(path)
как было указано в Scala получить путь к файлу в папке ресурсов
и
getClass.getResource
не работает (не знаю, не волнует, когда и почему именно),com.google.common.io.Resources.getResource
от Google гуава обычно делает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")