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

Unable to access file in relative path in Scala for test resource

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

就像在 Java 中一样,将资源文件放在 src/main/resourcessrc/test/resources 下是一个很好的做法,因为 Scala 提供了一个很好的 API 从检索资源文件。

考虑到您将 test.sql 文件放在 src/test/resources/setup/setup/script/test.sql 下,您可以通过执行以下操作轻松读取该文件:

斯卡拉 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 中的文件。

希望对您有所帮助。