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

Tests et Performance Java Discussion :

Récupération des résultats de test [JUnit]


Sujet :

Tests et Performance Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut Récupération des résultats de test
    Bonjour,

    Je travaille actuellement avec JUnit 4, et j'aurais aimé pouvoir récupérer les données de tests lors de l'exécution de ces derniers.

    Par exemple, pour lancer mes tests, j'utilise la classe suivante :

    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
     
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
     
    @RunWith(Suite.class)
    @SuiteClasses(value = { 
     
    		// Classes de test
    		MaClasseDeTest1.class,
    		MaClasseDeTest2.class,	
     
    	})
    public class TestAllJUnit1 {
     
    }
    Et je voudrais pouvoir récupérer les résultats de ces tests (nombre d'erreurs, de failures, temps d'exécution, etc.) pour pouvoir générer des fichiers de reporting par la suite.

    Si quelqu'un a une idée ou une piste, je suis preneur.
    Merci.


    Mako

    Edit :

    Avec une ancienne version de JUnit, voici ce que je voudrais en fait :

    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
     
    	public static void main(String[] args) {
    		try {
                            TestSuite suite = new TestSuite("TestAllActions");
    		        suite.addTest(MaClasseDeTest1.suite());
    		        suite.addTest(MaClasseDeTest2.suite());
     
    			TestResult testResult = junit.textui.TestRunner.run(suite);
                            // Le genre de donnees que je voudrais avoir :
    			Enumeration echecs = testResult.failures();
    			Enumeration erreurs = testResult.errors();
    			int nbTests = testResult.runCount();
    		}catch (Exception e) {
    		}
    	}

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 6 887
    Points
    6 887
    Par défaut
    Un lien vers une autre discussion avec le même problème.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Merci pour la réponse Nemek.

    A vrai dire, avant de poster mon problème, j'avais effectué quelques recherches durant lesquelles je suis notamment tombé sur la discussion dont tu parles.

    Mon soucis est que je ne voyais pas comment intégré de RunListener dans mon cas présent (lancement des tests via les annotations) sans avoir à tout refaire (il s'agit d'un gros projet avec de très nombreuses classes de tests).

    Mako

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 6 887
    Points
    6 887
    Par défaut
    Tu peux gérer le listener sur le runner si c'est toi qui a la main.

    Sinon ce que j'ai déjà fait car c'était une API tierce qui lançait le runner, c'est sous-classer Suite et de surcharger la méthode run afin d'ajouter ton listener
    Pense à enlever le listener après le run !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class NotifyingSuiteRunner extends Suite {
      public void run(RunNotifier notifier) {
        RunListener listener = ...;
        try {
          notifier.addListener(listener);
          super.run(notifier);
        }
        finally {
          notifier.removeListener(listener);
        }
      }
    }

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Points : 1 212
    Points
    1 212
    Par défaut
    Re,

    J'ai sous-classé la classe Suite, en lui mettant un listener personnalisé (juste pour tester pour le moment). Cela fonctionne, même si j'ai été obligé d'implémenter plusieurs constructeurs explicitement pour mon équivalent à ton NotifyingSuiteRunner (pas d'erreur à la compilation, mais lorsque je lançais les tests, j'avais : "java.lang.Exception: Custom runner class test should have a public constructor with signature NotifyingSuiteRunner(Class NotifyingSuiteRunnerClass)"), mais rien de bien méchant.

    Bref, merci pour ces réponses rapides et pertinentes, il ne me reste plus qu'à faire la gestion de ce que je vais récupérer, mais ça, c'est une autre histoire...

    Merci.

    Mako

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération des résultats des méthodes dans un service WCF
    Par est09 dans le forum Windows Communication Foundation
    Réponses: 16
    Dernier message: 02/04/2009, 16h44
  2. [RegEx] récupération des résultats de preg_match_all
    Par Dharius dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2008, 14h48
  3. [EJBQL] [EJB3] [Junit] Récupération des résultats d'un select
    Par nramariavelo dans le forum Java EE
    Réponses: 1
    Dernier message: 04/10/2006, 16h22
  4. Réponses: 2
    Dernier message: 21/05/2006, 14h02
  5. Réponses: 2
    Dernier message: 29/03/2006, 09h38

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