J'ai la structure de dossiers suivante dans Android Studio:
├── androidTest
│ ├── Java
│ └── res
│ └── raw
│ └── test_file
└── main
├── Java
└── res
└── raw
└── app_file
J'essaie d'accéder au test_file
ressource qui existe dans le dossier brut des éléments androidTest. Voici le code dans un scénario de test Robotium qui hérite de ActivityInstrumentationTestCase2
:
InputStream is = this.getInstrumentation()
.getContext()
.getResources()
.openRawResource(R.raw.test_file);
Android Studio génère une erreur de référence car la ressource est introuvable. L'erreur exacte est "Impossible de résoudre le symbole test_file".
Comment puis-je référencer cette ressource à partir d'un cas de test, qui existe sur le bundle de ressources androidTest?
Par défaut, votre projet androidTest inclura la classe R de votre application, mais les ressources androidTest seront générées dans un fichier séparé. Assurez-vous d'importer la classe R à partir de votre projet de test:
import com.your.package.test.R;
[..]
getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file);
Vous pouvez également référencer directement la classe R du projet de test:
getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file);
J'avais les ressources androidTest
au bon endroit (src/androidTest/res
) et je ne pouvais toujours pas y accéder via <normal.package>.test.R
. J'ai passé beaucoup de temps à googler pour essayer de comprendre ce qui se passait ..
Je suis finalement tombé sur la réponse. Si vous créez un buildType
où vous avez spécifié un applicationIdSuffix
, vos fichiers se trouvent à <applicationId><applicationIdSuffix>.test.R
!!!!
c'est à dire.
applicationId "com.example.my.app"
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
si vous avez des ressources androidTest dans le bon répertoire, vous ne pouvez y accéder que via com.example.my.app.debug.test.R
!!!!