Подтвердить что ты не робот

Как получить доступ к тестовым ресурсам?

У меня есть файл data.xml в src/test/resources/.

Как я могу прочитать этот файл в новом FileReader в моем тесте data.scala в src/test/scala/?

4b9b3361

Ответ 1

Доступ к ресурсам должен осуществляться с помощью специальных методов стиля 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.

Ответ 2

sbt копирует файлы с src/test/resources в target/scala-[scalaVersion]/test-classes.

Вы можете получить доступ к ресурсам в своих тестах следующим образом:

Source.fromURL(getClass.getResource("/testData.txt"))

Предполагается, что testData.txt находится непосредственно под папкой src/test/resources. Добавьте любые подкаталоги, в противном случае.

Ответ 4

И в тех случаях, когда getClass.getResource не работает (не знаю и не заботится, когда и почему именно), com.google.common.io.Resources.getResource из Google Guava обычно делает

testCompile "com.google.guava:guava:18.0"

Ответ 5

Чтобы узнать, где вы находитесь в файловой системе во время теста, вы можете сделать что-то подобное в фиктивном тесте:

 import scala.collection.JavaConversions._
  for(file <- new File(".").listFiles ){
   println(file.getAbsolutePath)
  }

Затем, когда вы знаете свой путь, в своем тесте вы можете использовать его как:

new File("./src/test/resources/yourfile.xml")