0

我有一个 Android 测试项目,它将几个文件写入 sdcard,其层次结构为:

appresults
 |
 +--- gen
 |
 +--- results

如果我让我的 Test.java 文件扩展AndroidTestCase,我的测试将正确运行,但是当我这样做时adb pull,一些文件将丢失,即结果目录中的任何内容。奇怪的是,gen 目录中的文件会涓涓细流进来。也就是说,我会做得到adb pull4,然后再次运行它,得到 8,依此类推,直到它们都出现。

但是,如果我让我的 Test.java 文件扩展TestCaseadb pull会发现所有文件都没有问题。

tearDown()无所事事地认为super.tearDown()可能是AndroidTestCase场景中的差异,但这并没有帮助。

我在测试方法的最后添加了日志,查询我缺少的文件的名称、大小和最后修改时间,据我所知,它返回了适当的值,直到我的测试运行的最后一秒,该文件是当下。

我还注意到AndroidTestCase做了一个额外的testAndroidTestCaseSetupProperly,但从我所看到的,所有这些都是确保上下文不为空:

public void  [More ...] testAndroidTestCaseSetupProperly() {
     assertNotNull("Context is null. setContext should be called before tests are run",
             mContext);
 }

所以我想我的问题是,是否会AndroidTestCaseAndroid 4.0.3.您清理文件?如果是这样,为什么它会清理一些文件而不清理其他文件?


根据请求,下面是显示我在做什么的代码:

File myPath = new File("some path");
FileOutputStream fos = new FileOutputStream(myPath);
OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8");
out.append("abcde");
out.close();
if (myPath.exists()) {
    Log.w(TAG, "Name: " + myPath.getAbsoluteFilePath());
    Log.w(TAG, "Size: " + myPath.length());
}

该代码将返回两个警告,例如:

Name: some pathSize: 5

表明a)文件是在正确的位置创建的,并且b)大小正确,写入成功。但是一旦我的测试退出,bam,adb pull那个目录上就没有输出了。(结果一)

4

0 回答 0