Utilisation de JUnit @Rule dans le coureur JUnit d'Eclipse
-
12-12-2019 - |
Question
Éclipse 3.7.2
Je viens de mettre en place un @Rule
dans certains tests JUnit 4, mais quand je les exécute dans Eclipse, le MethodRule
les méthodes ne sont pas appelées.C'est comme si le programme d'exécution du test Eclipse ne reconnaissait pas le @Rule
implémentations et ne fait rien de spécial avec les champs annotés avec @Rule
.
J'ai même essayé d'utiliser une MethodRule "Standard" comme org.junit.rules.TestName
mais cela ne fonctionne pas correctement (les noms du test ne sont pas renseignés dans l'instance).Même l'exemple de test dans le JavaDoc de TestName
échoue lorsqu'il est exécuté dans Eclipse.
Y a-t-il une astuce ?Eclipse ne prend-il tout simplement pas en charge JUnit Règles?
La solution
Il s'avère que quelqu'un avait inclus un JAR apparemment "obligatoire" sur le chemin de classe d'exécution du projet en question.Ce JAR embarque, entre autres choses, les packages JUnit !Il y a donc ce JAR, nommé quelque chose d'anodin comme our_runtime_library.jar
qui contient du code spécifique à l'application ainsi que des versions inconnues (mais anciennes) de JUnit, Spring et qui sait quoi d'autre.Lors de l'exécution du projet en tant que test unitaire, Eclipse récupérait le JUnit dans ce JAR au lieu de sa propre version (comme il se doit, les bibliothèques spécifiques au projet ont toujours la priorité), la version (Eclipse) sur laquelle le projet est construit.
Quel bordel;Maintenant, il faut déterminer qui mérite 50 coups de fouet pour celui-ci.
Autres conseils
Cela devrait fonctionner, au moins dans mon Eclipse (dans JUnit 4.8 intégré).Vous pourriez donc montrer votre code.
De plus, JavaDoc dit : Note that MethodRule is now deprecated, you should be using TestRule instead.