Android Studioに次のフォルダー構造があります:
├── androidTest
│ ├── Java
│ └── res
│ └── raw
│ └── test_file
└── main
├── Java
└── res
└── raw
└── app_file
AndroidTest要素のrawフォルダーにあるtest_file
リソースにアクセスしようとしています。以下は、ActivityInstrumentationTestCase2
を継承するRobotiumテストケース内のコードです。
InputStream is = this.getInstrumentation()
.getContext()
.getResources()
.openRawResource(R.raw.test_file);
リソースが見つからないため、Android Studioは参照エラーをスローします。正確なエラーは「シンボルtest_fileを解決できません」です。
AndroidTestリソースバンドルに存在するテストケースからこのリソースを参照するにはどうすればよいですか?
デフォルトでは、androidTestプロジェクトにはアプリのRクラスが含まれますが、androidTestのリソースは別のファイルに生成されます。テストプロジェクトからRクラスをインポートしてください:
import com.your.package.test.R;
[..]
getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file);
テストプロジェクトのRクラスを直接参照することもできます。
getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file);
androidTest
リソースが適切な場所(src/androidTest/res
)にありましたが、<normal.package>.test.R
を介してそれらにアクセスできませんでした。何が起こっているのかを把握しようとしてグーグルで多くの時間を費やしました。
私は最終的に答えにつまずいた。 buildType
を指定したapplicationIdSuffix
を構築している場合、ファイルは<applicationId><applicationIdSuffix>.test.R
!!!!にあります。
つまり.
applicationId "com.example.my.app"
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
適切なディレクトリにandroidTestリソースがある場合は、com.example.my.app.debug.test.R
!!!!経由でのみアクセスできます。