2017-01-05 2 views
1

Je suis en train d'écrire des tests d'interface utilisateur pour l'application sur laquelle je travaille et j'ai besoin de basculer une image basée sur une notification push. Pour écrire le test sans notifications push, je place un fichier png dans le répertoire res androidTest, puis je le charge avec ContextCompat.getDrawable() en utilisant l'identifiant de ressource des ressources de test. Je charge également la même image à partir des ressources de l'application en utilisant l'identifiant des ressources de l'application.Différents niveaux de chargement à partir des ressources de l'application par rapport aux ressources de test

Voici le code qui charge les ressources:

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 est une instance de BitmapDrawable, drawable2 est une instance de NinePatchDrawable. Puisque le PNG sous-jacent pour drawable2 est une copie du PNG pour drawable1, je m'attendrais à ce que les deux soient bitmapDrawables, je peux coder autour de ceci mais voudrait comprendre pourquoi ceci se produit pour la future référence.

+0

Donc, j'ai finalement compris, pour charger le png à partir des ressources androidTest, vous devez spécifier InstrumentationRegister.getContext(), sinon il va charger à partir des ressources de l'application. C'était une coïncidence que l'ID de ressource que j'ai spécifié pointait vers un fichier NinePatch. –

Répondre

0

Donc, j'ai finalement compris, pour charger le png à partir des ressources androidTest, vous devez spécifier InstrumentationRegister.getContext(), sinon il va charger à partir des ressources de l'application. C'était une coïncidence que l'ID de ressource que j'ai spécifié pointait vers un fichier NinePatch.