如何访问Scala中的测试资源?
我在 src/test/resources/
中有一个文件 data.xml
。
如何将该文件读入 src/test/scala/
中的测试 data.scala
中的新 FileReader
中?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我在 src/test/resources/
中有一个文件 data.xml
。
如何将该文件读入 src/test/scala/
中的测试 data.scala
中的新 FileReader
中?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
资源应该使用 Java 提供的特殊
getResource
样式方法来访问。鉴于data.xml
位于$SBT_PROJECT_HOME/src/test/resources/
中的示例,您可以在测试中访问它,如下所示:当然,
source
现在只是一个普通的 Scala IO 对象,因此您可以用它做任何您想做的事情,例如读取内容并将其用于测试数据。还有其他方法可以获取资源(例如作为流)。有关详细信息,请查看 getResource 方法rel="noreferrer">Java 文档:类。
Resources are meant to be accessed using the special
getResource
style methods that Java provides. Given your example ofdata.xml
being in$SBT_PROJECT_HOME/src/test/resources/
, you can access it in a test like so:Of course that
source
is now just a normal Scala IO object so you can do anything you want with it, like reading the contents and using it for test data.There are other methods to get the resource as well (for example as a stream). For more information look at the
getResource
methods on the Java Docs: Class.另一种选择(特别是如果您需要以
文件
的形式访问资源);是通过以下方式获取它的路径:正如 Scala 中指出的那样获取资源文件夹中文件的文件路径
Another alternative (especially if you need to access resource as a
File
); is to obtain it's path via:as has been pointed out in Scala get file path of file in resources folder
sbt 将文件从 src/test/resources 复制到 target/scala-[scalaVersion]/test-classes 。
您可以按如下方式访问测试中的资源:
它假定
testData.txt
直接位于文件夹src/test/resources
下。添加任何子目录,否则。sbt copies files from
src/test/resources
totarget/scala-[scalaVersion]/test-classes
.You can access the resources in your tests as follows:
It does assume that
testData.txt
was directly under the foldersrc/test/resources
. Add any subdirectories, otherwise.如果
getClass.getResource
不起作用(不知道也不关心具体时间或原因),来自 Google 的com.google.common.io.Resources.getResource
番石榴通常这样做And in cases where
getClass.getResource
does not work (don't know nor care when or why exactly),com.google.common.io.Resources.getResource
from Google Guava usually does要知道测试期间您在文件系统中的位置,您可以在虚拟测试中执行类似的操作:
然后,当您知道路径时,在测试中可以将其用作:
To know where you are in file system during test, you can do something like this in a dummy test:
Then, when you know your path, in your test you can use it as: