私が取り組んでいるアプリケーションのUIテストをいくつか書いており、プッシュ通知に基づいてイメージを切り替える必要があります。プッシュ通知なしでテストを書くには、androidTest resディレクトリにpngファイルを置き、テストリソースのリソースIDを使用してContextCompat.getDrawable()をロードします。私はまた、アプリケーションリソースからのIDを使用して、アプリケーションリソースから同じイメージをロードしています。アプリリソースとテストリソースとの間に描画可能なロードが異なる
はここでリソースをロードするコードです:
Drawable drawable1 = ContextCompat.getDrawable(setupRule.getActivity().getApplicationContext(), R.drawable.my_contact_pic);
Drawable drawable2 = ContextCompat.getDrawable(setupRule.getActivity().getApplicationContext(), com.mycompany.myapp.devenv.test.R.drawable.my_contact_pic);
drawable1はBitmapDrawableのインスタンスである、drawable2はNinePatchDrawableのインスタンスです。 drawable2の基になるPNGはdrawable1のPNGのコピーであるため、両方ともBitmapDrawablesであると思いますが、これをコードすることはできますが、これが将来の参考になる理由を理解したいと思います。
これで、androidTestリソースからpngをロードするために、InstrumentationRegister.getContext()を指定する必要がありました。そうしないと、アプリケーションリソースからロードされます。私が指定したリソースIDがNinePatchファイルを指していたのは偶然のことでした。 –