インストルメンテーションテスト中に、私のアプリが次のエラーを投げています。このエラーは、非テストビルドではスローされません。インストルメンテーションテスト中のライブラリgradleモジュールのリソースのResourceNotFoundException
android.content.res.Resources$NotFoundException: String resource ID #0x7f030002
私は2つのGradleのモジュール
:app (android-application) //applicationId: com.app
:library (android-library) //applicationId: com.library
//:app includes :library as a dependency
問題のリソースが定義されており、:library
モジュールでスローされています。
計装下にある間、私の:library
モジュールの呼び出し: -
context.getResources().getString(com.library.R.string.pref_key)
私は計測中にブレークポイントでデバッグすると呼び出した場合、これは例外
をスロー:
-
を
context.getResources().getString(com.app.R.string.pref_key)
- これは動作します!しかし、これは私の:library
モジュールのコードです。これは、拒否性が:app
ではありません。
どうすればこの問題を解決できますか?注 - エラーは計測テストでのみ発生し、通常のビルドでは発生しません。
更新:計測中、getString(com.library.R.string.pref_key)
は:app
モジュール内のクラスから呼び出されたときに機能しますが、:library
モジュール内のクラスから例外がスローされます。文字通り、の同じインスタンスで全く同じメソッドを呼び出すと、:app
と:library
から呼び出されたときの動作が異なります。
のために、このlinkを参照してください。 ':library'モジュールの中から呼び出されると、呼び出しは失敗します。 ':app * 'モジュール内から* exact *同じ呼び出しが行われた場合、それは動作します。 – ZakTaccardi