次の階層を持ついくつかのファイルをSDカードに書き込むAndroidテストプロジェクトがあります。
appresults
|
+--- gen
|
+--- results
Test.java ファイルを拡張するAndroidTestCase
と、テストは正しく実行されますが、実行するadb pull
と、結果ディレクトリ内のファイルなど、一部のファイルが失われます。不思議なことに、gen ディレクトリ内のファイルが少しずつ入ってきます。つまりadb pull
、実行して 4 を取得し、すぐにもう一度実行して 8 を取得し、それらがすべて表示されるまで繰り返します。
TestCase
ただし、Test.java ファイルを拡張するadb pull
と、すべてのファイルが問題なく表示されます。
シナリオの違いがあった可能性があるtearDown()
と考えて何もしないようにやり過ぎましたが、役に立ちませんでした.super.tearDown()
AndroidTestCase
テストメソッドの最後にログを追加して、名前、サイズ、最終更新日について欠落しているファイルをクエリし、適切な値を返したので、私の知る限り、テストが実行されている最後の 1 秒まで、そのファイルは現在。
私はまた、それがAndroidTestCase
追加を行うことに気付きましたが、私が見ることができることから、これが行うことは、コンテキストがnullでないことを保証することだけです:testAndroidTestCaseSetupProperly
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());
}
コードは次のような 2 つの警告を返します。
Name: some path
とSize: 5
a) ファイルが正しい場所に作成され、b) サイズが正しいことを示すと、書き込みは成功しました。しかし、私のテストが終了するとすぐに、bam、adb pull
そのディレクトリに何も出力されません。(結果その1)