Java 为什么不是';t我的JUnit测试文件';生活在起作用吗?
我有一个创建或重写Json文件的方法。 尽管文件在目录中可见,但我现在编写的测试方法无法确定该文件是否存在Java 为什么不是';t我的JUnit测试文件';生活在起作用吗?,java,file,junit,Java,File,Junit,我有一个创建或重写Json文件的方法。 尽管文件在目录中可见,但我现在编写的测试方法无法确定该文件是否存在 file.exists()是如何被错误地实现的,或者什么是可行的替代方案?当我自己测试这个函数时,该函数似乎如我所期望的那样工作 如果somefile.txt不存在,则测试应该失败,但是如果确实存在,则测试通过 只是为了弄清构造函数和.exists()的作用: 这只是创建一个新的文件实例,一个抽象路径名,而不是实际的文件 File file = new File("somefile.txt
file.exists()是如何被错误地实现的,或者什么是可行的替代方案?当我自己测试这个函数时,该函数似乎如我所期望的那样工作 如果somefile.txt不存在,则测试应该失败,但是如果确实存在,则测试通过 只是为了弄清构造函数和.exists()的作用: 这只是创建一个新的文件实例,一个抽象路径名,而不是实际的文件
File file = new File("somefile.txt");
javadoc说得最好:
测试此抽象路径名表示的文件或目录
存在
如果此测试仍然失败,我建议添加
file.exists()
这将返回一个绝对路径字符串,如果该文件存在,它将位于该文件所在的位置。当我自己测试该文件时,该函数似乎按照我的预期工作 如果somefile.txt不存在,则测试应该失败,但是如果确实存在,则测试通过 只是为了弄清构造函数和.exists()的作用: 这只是创建一个新的文件实例,一个抽象路径名,而不是实际的文件
File file = new File("somefile.txt");
javadoc说得最好:
测试此抽象路径名表示的文件或目录
存在
如果此测试仍然失败,我建议添加
file.exists()
这将返回一个字符串,其中包含该文件存在时的绝对路径。您的问题不是关于单元测试,而是关于如何在Java中访问该文件 访问文件的方式:
file.getAbsoluteFile()
该文件必须与包含测试的Java源文件位于文件系统上的同一文件夹中
仅供记录: 单元测试不访问文件系统(或任何其他昂贵的资源) 在UnitTest中,您可以使用Mockito、JMock(-it)或类似的模拟框架来模拟这些资源(或使用它们的类) 此外,您不测试第三方类(如
java.io.File
)。测试您的类,以及它们如何与此依赖项通信:
File file = new File("somefile.txt");
您的问题不是关于单元测试,而是关于如何在Java中访问文件 访问文件的方式:
file.getAbsoluteFile()
该文件必须与包含测试的Java源文件位于文件系统上的同一文件夹中
仅供记录: 单元测试不访问文件系统(或任何其他昂贵的资源) 在UnitTest中,您可以使用Mockito、JMock(-it)或类似的模拟框架来模拟这些资源(或使用它们的类) 此外,您不测试第三方类(如
java.io.File
)。测试您的类,以及它们如何与此依赖项通信:
File file = new File("somefile.txt");
可能没有在您认为的目录中搜索该文件,请尝试打印
file.getAbsolutePath()
。您只需检查assertTrue(file.exists())
assertTrue和getAbsolutePath文件组合解决的问题的可能重复项意外存储在中。idea/Modules可能未在您认为的目录中搜索该文件,请尝试打印File.getAbsolutePath()
。您只需检查assertTrue(File.exists())
assertTrue和getAbsolutePath文件组合解决的问题的可能重复项意外存储在.idea/modules中