我已经使用Maven设置了我的SCALA项目,现在我正在编写测试并需要访问资源路径子目录下的文件,如:
src/test/resource/abc/123.sql
现在我正在做以下事情:
val relativepath = "/setup/setup/script/test.sql"
val path = getClass.getResource(relativepath).getPath
println(path)
但这是指向src / main / resource文件夹而不是测试资源,任何人都知道我在这里做错了什么?
答案 0 :(得分:5)
就像在Java中一样,将资源文件放在src/main/resources
和src/test/resources
下是一种很好的做法,因为Scala通过检索资源文件提供了一个很好的API。
考虑到您将test.sql
文件放在src/test/resources/setup/setup/script/test.sql
下,您可以通过执行以下操作轻松阅读该文件:
Scala 2.12
import scala.io.Source
val relativePath = "setup/setup/script/test.sql"
val sqlFile : Iterator[String] = Source.fromResource(relativePath).getLines
之前的Scala版本
import scala.io.Source
val relativePath = "setup/setup/script/test.sql"
val stream : InputStream = getClass.getResourceAsStream(relativePath)
val sqlFile : Iterator[String] = Source.fromInputStream(stream).getLines
这样做,您甚至可以将相同的文件放在src/main/resources
中的相同相对路径下。尝试在测试中访问资源文件时,将考虑src/test/resources
中的文件。
我希望这有用。