扩展AndroidTestCase时缺少文件,TestCase工作正常

时间:2012-08-24 16:42:21

标签: java android junit android-testing

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

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

如果我将Test.java文件扩展为AndroidTestCase,我的测试将正确运行,但当我执行adb pull时,某些文件将丢失,即结果目录中的任何内容。奇怪的是,gen目录中的文件会流入。也就是说我将adb pull并获得4,立即再次运行并获得8,依此类推,直到它们全部出现。

如果我将Test.java文件扩展为TestCaseadb pull会发现所有文件都没问题。

我覆盖tearDown()不做任何事情,super.tearDown()可能是AndroidTestCase情景中的差异,但它没有帮助。

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

我还注意到AndroidTestCase执行了额外的testAndroidTestCaseSetupProperlyfrom what I can see,所有这一切都确保了上下文不为空:

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

所以我想我的问题是AndroidTestCase Android 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输出。 (结果一)

0 个答案:

没有答案