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