我正致力于改善项目的代码覆盖率,因为我使用Android Developer网站的以下代码片段编写了一个将文件写入android internalStorage
的方法。
String FILENAME = "hello_file";
String string = "hello world!";
File testFile = new File(context.getFilesDir(), FILENAME);
FileOutputStream fos =new FileOutputStream(file);
fos.write(string.getBytes());
fos.close();
我的想法是通过阅读文件断言并与hello world!
进行比较,看看它们是否匹配,以证明我的写作功能在单元测试/ Android Instrumentation测试中有效。但是,由于以下
在Android中测试此类IO功能的最佳做法是什么?我是否应该关心文件是否已创建并放入?或者我只是检查fos
是否来自非空?
FileOutputStream fos =new FileOutputStream(file);
请提供给我的建议。谢谢。
答案 0 :(得分:5)
我不会测试该文件是否已保存 - 这不是您的系统,Android AOSP应该进行测试以确保文件实际保存。 Read more here
您要测试的是,如果您要告诉Android保存文件。也许是这样的:
String FILENAME = "hello_file";
String string = "hello world!";
File testFile = new File(context.getFilesDir(), FILENAME);
FileOutputStream fos =new FileOutputStream(file);
public void saveAndClose(String data, FileOutputStream fos) {
fos.write(data.getBytes());
fos.close();
}
然后你的测试会使用Mockito作为FOS,并且是:
FileOutputStream mockFos = Mockito.mock(FileOutputStream.class);
String data = "ensure written";
classUnderTest.saveAndClose(data, mockFos);
verify(mockFos).write(data.getBytes());
第二次测试:
FileOutputStream mockFos = Mockito.mock(FileOutputStream.class);
String data = "ensure closed";
classUnderTest.saveAndClose(data, mockFos);
verify(mockFos).close();