无法在Scala中的相对路径中访问文件以获取测试资源



我已经使用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/RESOUTION文件夹,而不是测试资源,任何人都知道我在这里做错了什么?

就像在java中一样,最好将资源文件放在src/main/resourcessrc/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的文件。

我希望这很有帮助。

最新更新