@Test
public void createFileTest() throws Exception {
File file = new File("somefile.txt");
boolean expectedResult = true;
boolean actualResult = false;
if (file.exists()){
actualResult = true;
}
assertEquals(expectedResult, actualResult);
}
我有一个创建或重写Json文件的方法。 我现在编写的测试方法无法确定文件是否存在,尽管文件在目录中可见。
如何正确实现file.exists(),或者什么是可行的替代方案?
答案 0 :(得分:0)
当我自己测试时,功能似乎正如我所期望的那样工作。
如果somefile.txt不存在,那么测试应该失败,但如果确实存在则测试通过。
只是为了清楚构造函数和.exists()的作用:
File file = new File("somefile.txt");
这只是创建一个新的File实例,一个抽象的路径名而不是一个实际的文件。
file.exists()
最好用javadoc:
测试此抽象路径名表示的文件或目录 存在。
如果此测试仍然失败,我建议添加
file.getAbsoluteFile()
这将返回此文件存在的绝对路径的字符串。
答案 1 :(得分:0)
您的问题不是关于UnitTesting,而是关于如何使用Java访问文件。
您获取文件的方式:
File file = new File("somefile.txt");
文件必须位于文件系统的同一文件夹中,因为Java源文件包含测试。
仅供记录:
UnitTests不访问文件系统(或任何其他昂贵的资源)。
在UnitTest中,你使用像Mockito,JMock(-it)等类似的模拟框架来模拟这些资源(或使用它们的类)。
此外,你不测试第三方课程(如java.io.File
)。您测试您的类,以及它们如何与此依赖关系进行通信:
@Test
public void writeTo_FileNotExisting_CreatesTheFile(){
// arrange
File targetFile = mock(File.class);
when(targetFile.exists()).thenReturn(false);
// act
new YourJsonWriter().writeTo(targetFile);
// assert
verify(targetFile).createNewFile();
}