J’ai une expérience considérable dans la création d’applications Android. Pour mon nouveau projet, nous avons décidé de faire du développement piloté par les tests (TDD). Je me suis familiarisé avec Robotium pour le test de scénario utilisateur, et cela fonctionne très bien et semble facile aussi.
Pour les tests unitaires, j’ai essayé de me moquer du contexte en utilisant (MockContext Android Class) mais je suis incapable de le faire. Je suis passé par ce blog http://sites.google.com/site/androiddevtesting/ et à travers ce http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html , qui suggère le fait de se moquer des applications Android est encore très limité et a suggéré d’utiliser PowerMock, jMockit, JeasyTest ou Roboelecsortingc (en combinaison avec Mockito et Maven) et même RoboGuice.
Je souhaiterais obtenir des suggestions de votre part sur la structure de test unitaire qui, à votre avis, est la meilleure pour tester les applications Android. (en particulier tester les classes Android, en donnant éventuellement des simulacres de Contextes et d’autres fonctionnalités moqueuses pour que mes scénarios de test soient aussi indépendants que possible). Toute suggestion ou indication serait utile. Merci
Pour les tests hors appareil, consultez Robolecsortingc
Pour les tests sur périphérique, consultez Borachio
En résumé: il est toujours très difficile de bien faire. Les choses s’améliorent (la situation est nettement meilleure aujourd’hui qu’il ya 6 mois), mais Android est confortablement l’environnement le plus hostile pour lequel j’ai écrit des programmes.
Pour faire TDD sous Android, j’utilise personnellement tous les éléments suivants:
En outre, l’utilisation de bibliothèques d’dependency injections telles que Dagger ou Roboguice simplifiera grandement vos tests d’unité / d’intégration. Pour exécuter des tests sur plusieurs périphériques, envisagez d’utiliser Spoon .
Un exemple est donné ci-dessous. L’activité montre Hello World lorsque vous cliquez sur un bouton –
public class HelloWorldActivityTest extends ActivityInstrumentationTestCase2 { private HelloWorld activity; public HelloWorldActivityTest() { super(HelloWorldActivityTest.class); } public void testShouldRenderGreetingOnButtonClick() { activity = this.getActivity(); Button button = (Button) activity.findViewById(R.id.btn_greet); TouchUtils.clickView(this, button); assertEquals("Hello World!", ((TextView) activity.findViewById(android.R.id.greeting_text)) .getText()); } }
EDIT: Les choses ont changé depuis que j’ai posté la réponse. Mockito a maintenant un support raisonnablement bon pour Android. Et pour les tests, nous sums passés de ActivityInstrumentationTestCase2 à Robolecsortingc, juste pour exploiter la vitesse de JVM en phase de développement. Le cadre de test Android est idéal pour les tests d’intégration et fonctionnels, mais pas pour les tests unitaires.
Pour appliquer TDD pour Android, Android Testing Codelab vous sera très utile. Code lab montre une utilisation de l’outil de test et comment vous pouvez appliquer TDD pour Android. Je l’ai essayé et cela m’a été très utile.
Bonus: Check Clean Architecture
Android Testing Support Library fournit un cadre complet pour tester les applications Android. Cette bibliothèque fournit un ensemble d’API qui vous permettent de créer et d’exécuter rapidement du code de test pour vos applications, y compris les tests JUnit 4 et l’interface utilisateur fonctionnelle. Vous pouvez exécuter des tests créés à l’aide de ces API à partir de l’IDE Android Studio ou à partir de la ligne de commande.
En savoir plus sur:
Je vous remercie 🙂
nous avons
https://developer.android.com/training/testing/start/index.html
et peut tester des tests locaux (s’exécute sur JVM) et des tests instrumentaux (s’exécute sur un périphérique ou un émulateur)
Pour cela nous devons append
Android Testing Support Library
Le SDK Android comprend deux outils pour tester les applications fonctionnelles
Singe et monkeyrunner