IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Tests unitaires sur un service Android


Sujet :

Android

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut Tests unitaires sur un service Android
    Bonjour,

    Je souhaite réaliser des tests unitaires sur mon application en développement. Pour faire cela, j'utilise la librairie JUnit4. Jusqu'à aujourd'hui, je n'ai eu aucun problème pour réaliser mes tests sur les modèles données et autres.

    Maintenant, j'aimerai pouvoir réaliser des tests unitaires sur un service android que j'ai mis en place. Pour cela, j'étends ma classe de test avec "ServiceTestCase". Le problème est quand je lance mon test, celui-ci ne semble pas être appelé. Les seuls appelles faits sont "testServiceTestCaseSetUpProperly" qui est une méthode que je n'ai pas rajouté.

    Est ce quelqu'un serait-il comment utiliser ce type de test ou aurait un exemple d'utilisation qui fonctionne ?

    Cordialement,
    Jerem721

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Tu veux dire que les fonctions "testXXXX" ne sont pas appelées ?

    Il est possible de voir le code du TestCase ?

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    Oui, bien sur. J'ai fait quelque chose de très simple pour voir comment ça fonctionnait déjà.

    Oui mes méthodes TextXXXX ne sont pas appelées. Je pense que j'ai du oublier quelque chose. Sur la documentation Android, google parle d'utiliser MockApplication, mais je comprends pas bien à quoi ça sert. Et j'arrive pas à trouver d'exemple d'implémentation sur internet.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    /**
     * Created with IntelliJ IDEA.
     */
    public class BasicServiceTest extends ServiceTestCase {
     
        private Intent      intent;
     
        public BasicServiceTest(){
            super(BasicServiceTest.class);
        }
     
        @Override
        public void setUp() throws Exception {
            super.setUp();
            intent = new Intent(getContext(), BasicService.class);
        }
     
        @Override
        public void tearDown() throws Exception {
            super.tearDown();
        }
     
        @Test
        public void StartServiceTest() throws Exception{
            startService(intent);
        }
     
        @Test
        public void BindServiceTest() throws Exception{
            IBinder binder;
     
            binder = bindService(intent);
            assertNotNull(binder);
        }
     
    }

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    1. On est en Java: StartServiceTest() devrait s'appeler "startServiceTest()"

    2. On est sous JUnit, une fonction de test doit donc bien *commencer* par "test" (http://junit.sourceforge.net/junit3..../TestCase.html)


    Donc ici la fonction doit s'appeler "testStartService()"

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    En effet pour la majuscule je reconnais ma faute , merci.

    Par contre pour le "startServiceTest()", intelliJ me les génèrent tous sous cette forme donc je ne savais pas.

    Ça pourrait venir de ça mon problème ?

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Remarque : Android ne supporte pas JUnit 4, mais JUnit 3.
    Citation Envoyé par [url=https://developer.android.com/tools/testing/testing_android.html#JUnit]Source[/url]
    Note that the Android testing API supports JUnit 3 code style, but not JUnit 4.
    C'est bizarre qu'IDEA te propose de les créer en xxxxxTest. De mon coté, il génère des testXxxxxx. Je vérifierai quand j'arriverai au boulot.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    C'est peut être une option à régler, je vais regarder de mon coté aussi.

    Je vais tester en réutilisant la librairie de JUnit 3 et je vous retiens au courant si ça fonctionne ou non. Merci pour ce petit détail qui pourra peut être me débloquer.

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Non, je n'y suis pas arrivé à 16:00

    De mon coté, je confirme, IDEA me les crée avec le formalisme testXXXX.

    De ce que je lis, les MockContext et MockApplication servent à créer de faux Context/Application pour simuler le conteneur et cloisonner le test.
    Enfin, avant de se pencher là-dessus, il faudrait déjà que ton test soit au rouge.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    Il faut que je regarde de plus près la génération automatique des tests unitaires car dans mes préférences ils sont bien de la forme "testXXX".

    Concernant l'appelle des méthodes, avec JUnit 3 toutes les méthodes de ma classe test sont appelées. Merci beaucoup de m'avoir fait remarqué qu'il fallait pas utiliser JUnit 4

    J'aurai une autre question à poser aussi. J'ai une classe qui me permet d'abstraire toute la partie connexion et déconnexion d'un service et me permet de manipuler les services (envoie de message par exemple). Comment je pourrais tester cette classe sachant que mes services sont lancé comme ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myContext.bindService(intent, connection, Context.BIND_AUTO_CREATE);
    Le but serait de tester si ma classe arrive à gérer plusieurs services, à les lancer tous, etc...

    Avec ServiceTestCase, je peux lancer qu'un service, si je veux en lancer plusieurs je dois hériter de quel type de testCase ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/07/2009, 19h06
  2. Test unitaire sur les vue d'une base de données
    Par bragon dans le forum Tests et Performance
    Réponses: 4
    Dernier message: 04/02/2009, 12h29
  3. Test unitaire sur IHM
    Par Tsunamis dans le forum Visual C++
    Réponses: 0
    Dernier message: 04/12/2008, 14h26
  4. Test unitaire sur une servlet
    Par ReaM dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 12/08/2008, 12h08
  5. Tests unitaires sur un ETL
    Par ygrim dans le forum Approche théorique du décisionnel
    Réponses: 2
    Dernier message: 11/06/2008, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo