テストアプリケーションとメインアプリケーションのリソースは、インストルメンテーションテストケースで別々にアクセスできます。テストプロジェクト自体のres/rawまたはassetsフォルダーにあるリソースにアクセスする場合は、次を使用できます。
getInstrumentation().getContext().getResources()
テスト対象のアプリケーション(「ターゲット」アプリケーション)のリソースにアクセスするには、次を使用します。
getInstrumentation().getTargetContext().getResources()
ただし、アセットフォルダ内のファイルは変更できないことに注意してください。
getResources().getAssets().open(sourceFile)
InputStreamを返します。ファイルを変更する方法はありません。これは、アセットがAPK内に圧縮されて保存されており、実際にはまったく書き込みできないためです。
テストするアクティビティが使用するファイルへのパスを変更する場合は、 RenamingDelegatingContextを指定してActivityUnitTestCaseおよびsetActivityContext()を使用する必要があります。これにより、ディレクトリプレフィックスを指定することにより、コンテキスト内のファイルおよびデータベースアクセスを新しいディレクトリにリダイレクトできます。より複雑なコンストラクターを使用してほとんどの操作のターゲットコンテキストをラップすることもできますが、ファイル操作にはテストアプリケーションのコンテキストを使用するため、アクティビティはプライマリアプリケーションではなくテストアプリケーションに保存されているファイルにアクセスしますが、プライマリアプリケーション。