3

私のアプリケーションの一部には、png ファイルをローカルのファイル ディレクトリに保存し、コンテンツ プロバイダーを介して共有することが含まれます。

経由でファイルを書き込みますgetContext().openFileOutput

ただし、私のコンテンツ プロバイダーでParcelFileDescriptorは、実際のファイル オブジェクトしか開きません。したがって、 を使用してモック アウトされたコンテンツ プロバイダ経由でこれを実行しようとするとProviderTestCase2、次のコードは機能しません。

return ParcelFileDescriptor.open(new File(getContext().getFilesDir(), filename), ParcelFileDescriptor.MODE_READ_ONLY)

これは、コードを介してプロバイダーに渡されるモック コンテキスト内のcontext.getFilesDir()を指すためです。上記のコードは、ディレクトリとしてカウントされないため、例外になります。これは意図したとおりですか?/dev/nullProviderTestCase2/dev/null

4

1 に答える 1

0

これは冗談のように感じます...ドキュメントは言う:

openFileOutput(String, int) で作成されたファイルが保存されているファイルシステム上のディレクトリへの絶対パスを返します。

しかし、IsolatedContext のソースは次のとおりです。

@Override
public File getFilesDir() {
    return new File("/dev/null");
}

そのため、その方法を無視して試してみてください

@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();

テスト中。

于 2016-03-14T10:05:36.120 に答える