Cette base sépare volontairement les tests rapides JVM des tests Android instrumentés.
app/src/test)Ils couvrent les règles métier, les agrégations météo, le mapping réseau, les ViewModels, les widgets purs et les schedulers testables sans appareil. Ils ne doivent dépendre ni du réseau réel, ni de l’heure système non contrôlée, ni d’une base Android persistante.
app/src/androidTest)Ils couvrent ce qui nécessite Android :
MainActivity avec repositories Hilt factices ;Les parcours d’application n’utilisent jamais Open-Meteo. TestRepositoryModule remplace les repositories de production par des fakes déterministes. Les dates de fixtures sont calculées relativement au jour d’exécution puis figées pour tout le processus de test.
Sous Windows :
.\gradlew.bat testDebugUnitTest
.\gradlew.bat connectedDebugAndroidTest
.\gradlew.bat lintDebug
.\gradlew.bat assembleDebug
Validation complète :
.\gradlew.bat testDebugUnitTest connectedDebugAndroidTest lintDebug assembleDebug
Sous macOS/Linux, remplacer gradlew.bat par ./gradlew.
androidTest.Avant une release, exécuter au minimum la suite sur une locale française et une locale anglaise, ainsi que sur un appareil physique si possible.
setContent une seule fois.testTag, un rôle sémantique ou une ressource localisée, jamais une chaîne française arbitraire quand elle peut varier.Pour obtenir davantage de détails :
.\gradlew.bat connectedDebugAndroidTest --stacktrace --info
Les rapports sont générés dans :
app/build/reports/tests/testDebugUnitTest/app/build/reports/androidTests/connected/app/build/reports/lint-results-debug.htmlLe travail périodique porte le tag meteocompare_widget et le nom unique
meteocompare_widget_refresh. Pour diagnostiquer un téléphone où le launcher
semble conserver une ancienne vue :
adb logcat -s MeteoCompare/Widget WM-WorkerWrapper WM-Processor
adb shell dumpsys jobscheduler | findstr /I "meteocompare widget_refresh"
Test de reprise après veille profonde :
adb shell dumpsys deviceidle force-idle
# Attendre, puis sortir du mode idle
adb shell dumpsys deviceidle unforce
adb shell input keyevent KEYCODE_WAKEUP
Points à vérifier :
ENQUEUED entre deux exécutions ;force-stop manuel bloque volontairement tous les composants Android
jusqu’à la prochaine ouverture de l’application : ce cas ne peut pas être
contourné par WorkManager ou par un receiver.