Shiny happy people coding

Codons avec le sourire

Sortir un test Junit à partir d'un test Junit d'Eclipse

| Comments

Au niveau de mon travail, on m'a demandé de réaliser une sortie console de nos tests unitaires. Hélas on a jamais pris le temps de réaliser un pom.xml complet (pour projet Maven) pour ainsi avoir toutes les dépendances nécessaires.

Comme toujours on m'a demandé de réaliser cette sortie assez rapidement. J'ai donc trouvé une petite bidouille pour arriver à réaliser mon test en console en conservant complètement mon classpath défini par Eclipse.

Tout d'abord il faut récupérer la commande réaliser par Eclipse pour lancer le test. Pour cela, il suffit de mettre un point d'arrêt dans son script Junit, lancer le script en mode « Debug » et ensuite quand le point d'arrêt à stopper le processus, un clic droit sur le thread permet de consulter le menu de propriété de lancement de ce thread.

On copie entièrement la ligne de commande qui est de la forme suivante :

C:\bea\jdk142_05\bin\javaw.exe -classpath ${CLASSPATH_DE_LANCEMENT}
-Xdebug 
-Xnoagent
-Xrunjdwp:transport=dt_socket,suspend=y,address=localhost:1859 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner 
-version 3 
-port 1858 
-testLoaderClass Org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader
-classNames ${CLASSE_LANCER_POUR_LE_TEST}

Dans mon exemple les variables ${} sont bien sûr différente. Je les ai remplacé pour limiter un peu la place prise par la ligne de commande.

Maintenant que vous avez cette ligne de commande, il suffit de faire quelque modification dessus et vous aurez votre ligne de commande complète. Les modifications à réaliser sont les suivantes :

  • Suppression de l'option -Xdebug
  • Suppression de l'option -Xnoagent
  • Suppression de l'option -Xrunjdwp:transport=dt_socket,suspend=y,address=localhost:1859
  • Suppression de -port 1858
  • Transformer l'exécutable de lancement pas java.exe au lieu de javaw.exe
  • Transformer la classe de lancement par junit.textui.TestRunner au lieu de org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestLoader qui est spécifique à Eclipse.

Maintenant que vous avez réalisé tous ces petits changements vous pouvez désormais lancer la ligne de commande obtenu de la façon suivante :

C:\bea\jdk142_05\bin\java.exe 
-classpath ${CLASSPATH_DE_LANCEMENT} 
junit.textui.TestRunner 
-version 3 
-classNames ${CLASSE_LANCER_POUR_LE_TEST}

Bien sûr il y a d'autres techniques qui sont de simplement récupérer le CLASSPATH par exemple et de le mettre dans notre ligne de commande.