我写了一个Android应用程序(其中包括)将文件写入磁盘。现在我想知道当文件系统在存储空间之外运行时会发生什么。我想,例如java.io.FileOutputStream.write()
将抛出一个IOException
,我将不得不赶上。Android测试存储空间
事情是,我不想依赖我的超级忍者的力量 - 我可能忘记了在某处放置试管或者没有正确处理它。因此我想测试这个场景。
很遗憾,我找不到任何关于这样做的良好做法 - 甚至不在SO上。
我当然冷手动像这样的东西的文件系统,我想:
size = N
dir = /some/path
data = generateDataForSize(size)
while(write(data, dir));
while(round(size/=2) > 1)
write(generateDataForSize(size), dir)
凡write()
要么产生不同的文件或追加到一个单一的一个。 generateDataForSize()
和大尺寸可能存在一些问题,但现在我们暂且搁置。
什么痒我是,我将不得不把这个地方放到我的应用程序,再加上我将不得不清理$%#!手动。好的,如果我把它放在自己的目录中,我可以在adb shell中用一行代码来丢弃整个东西。
无论如何,有没有更简单的方法去为我失踪? Android是否为此提供了任何机制,例如暂时限制每个应用的可用存储空间?任何集成单元测试soldes或android sdk工具?其他人(你)如何做到这一点?
TL; DR:如何有效的工具和书写到fs时,它的充分的测试情况下,FS。
编辑:我测试未扎根在真实设备上。即使HAXM启动并运行,模拟器也非常慢。可悲的是,使用模拟器不是一种选择。尽管如此,Tasos Moustakas暗示限制了AVD的可用空间,但这一点很不错。我想如果你避免android:installLocation="preferExternal"
的问题,并将你的应用程序移动到SD /写入文件到有限的SD,这是一个可接受的解决方案。
接受的答案几乎是我最终做的。但是,这仍然需要一些手动工作,所以随时发布更多的答案。
首先,你在哪里测试你的应用程序? AVD仿真器还是物理设备? –