File Scala:用于测试的文件对象(资源?)

File Scala:用于测试的文件对象(资源?),file,scala,unit-testing,File,Scala,Unit Testing,我需要向类传递一个文件以进行单元测试。该类需要一个特定的文件,并且不能修改-它只是读取它。(因此,我不想模仿或修改该类,只需将所需的文件传递给它即可。) 推荐的方法是什么 我将该文件放在src/test/resources/…中,并将整个路径传入,由于测试是在项目根目录中运行的,因此可以正常工作。但这似乎是完全错误的 更新:强调-类需要一个文件对象,而不是输入流或其他任何东西。this.getClass().getResourceAsStream(文件名)是从资源中读取文件的推荐方法如果需要在类

我需要向类传递一个文件以进行单元测试。该类需要一个特定的文件,并且不能修改-它只是读取它。(因此,我不想模仿或修改该类,只需将所需的文件传递给它即可。)

推荐的方法是什么

我将该文件放在
src/test/resources/…
中,并将整个路径传入,由于测试是在项目根目录中运行的,因此可以正常工作。但这似乎是完全错误的


更新:强调-类需要一个文件对象,而不是输入流或其他任何东西。

this.getClass().getResourceAsStream(文件名)
是从资源中读取文件的推荐方法

如果需要在类路径上查找某个内容并将其作为
文件返回,请尝试以下操作:

import java.net.URL
import java.io.File

object Test extends App {
  val fileUrl: URL = getClass.getResource("Test.class")
  val file : File = new File(fileUrl.toURI())
  println(s"File Path: ${file.getCanonicalPath}")
}

它或多或少地使用了所有Java类,但它可以工作。在我的示例中,
Test
对象正在查找自己编译的类文件,但是您显然可以将其更改为您想要的任何类型。

JVM没有将类路径资源作为
文件获取的概念,因为资源不一定与文件对应。(它们通常装在罐子里。)


您的测试可以从获取一个
InputStream
并将其复制到一个临时文件开始。

可能是@Noah的副本-Java问题涉及获取一个InputStream,我需要一个特定的文件对象这是什么?请参阅更新,我需要一个文件对象,而不是InputStream