Une histoire sur la difficulté à aligner un cadre de test avec Java 6

Le site est Java 6.

Je fais des tests manuels tout le temps, mais il y a des limites, non? J'ai fini par écrire le code de test et aidé avec cette estimation.

J'ai commencé par collectionner JUnit et Mockito, mais je ne sais pas. J'ai eu du mal car c'était trop vieux et je ne pouvais pas accéder facilement aux informations.

Vous mourrez si vous avez trop de dettes techniques? Un mémorandum comme cas.

JUnit 4.11 En parlant d'écriture de code de test en Java, JUnit. Le dernier est JUnit 5, mais il ne peut être utilisé qu'avec Java 8 ou version ultérieure, alors choisissez parmi 4 séries. Il doit être 4.8 ou supérieur pour utiliser l'annotation @Rule décrite plus tard.

assertJ 1.7.1 Bibliothèque d'assertions.

Parce que c'est un style d'écriture en se connectant à une chaîne de méthodes C'est dur de devenir ((((parenthèse enfer)))) Vous pouvez écrire une instruction d'assertion pompon selon la suggestion Eclipse.

Mockito 1.9.5 Une bibliothèque qui facilite la mise en œuvre de maquettes de test. Il semble se lire comme Mohito. Pour la série JUit5, il y a Mockito 2.x.x, mais pour la série JUnit4, la stabilité semble être de 1.9.5.

Qu'est-ce qu'une simulation?

Supposons que vous souhaitiez tester la méthode hogehoge () de la classe Hoge. Si la méthode hogehoge () dépend d'une autre classe Fuga Vous ne pouvez pas tester sans préparer le cours Fuga.

Quand c'est le cas avec un simulacre "Quand vous voyez Fuga # fugafuga () de la classe Hoge, renvoyez simplement 3." Peut être mis en place. Il est indispensable de dire test en Java.

PowerMock 1.5.6 Mockito est vraiment utile, mais vous ne pouvez pas vous moquer des méthodes statiques. PowerMock en le piratant joliment Vous pouvez vous moquer des méthodes statiques de la même manière que Mockito. Aussi des méthodes privées.

Dans le domaine où Java est utilisé depuis longtemps, il existe également une méthode statique Ceci est également indispensable car il hurle (biaisé).

Ce Power Mock et Eclemma, qui seront décrits plus loin, étaient incompatibles et j'ai eu du mal. (Résolu dans la dernière version)

J'ai choisi 1.5.6 car Mockito 1.9.x et PowerMock 1.5.x sont compatibles.

Javassist3.18.2 Javassist est une bibliothèque utilisée lors de la lecture avec du code d'octet Java. Le code d'octet Java est la source Java que nous avons écrite Celui qui peut être compilé. Celui qui s'exécute sur la JVM.

PowerMock l'utilise. Code d'octet Java au lieu de la source Il semble que le simulacre se réalise en le réécrivant bien. (Je ne connais pas les détails, et cette explication peut être incorrecte)

Javassist 3.4 est inclus dans le projet existant, C'était la plus haute priorité, alors quand j'étais en colère, j'étais accro à "Quoi? Vous êtes?"

QuickJUnit Plug-in Eclipse pour l'écriture de JUnit. Il existe différents raccourcis et modèles.

Eclemma 3.0.1 ** Bibliothèque Ecl ** ipse + ** EMMA **. Un plug-in pour exécuter EMMA, qui mesure la couverture des tests, sur Eclipse. Eclemma a cessé de se mettre à jour il y a longtemps et je voulais vraiment utiliser JaCoCo.

Eclemma et PowerMock 1.5.6 sont très incompatibles, Lorsque j'exécute un test à l'aide de PowerMock, une couverture de 0% s'affiche.

Eclemma regarde le code d'octet Java que je viens de décrire et voit où il a été exécuté. je regarde PowerMock (pour simuler les méthodes statiques) Parce que (une copie de) ce code d'octet est édité avec Javassist et qui est exécuté.

Ce problème a été résolu pour Java8, JUnit5 et versions ultérieures.

Annotation de règle

En l'utilisant à la place de RunWith Le "problème de couverture à 0%" ci-dessus peut être évité.

Référence: https://code.i-harness.com/ja/q/1647e8c

Résumé

C'est tout (je pense) J'ai pu écrire du code de test pour plusieurs méthodes, l'exécuter et mesurer la couverture.

C'est toujours bon parce que c'est Java, parce que c'est juste difficile à trouver et il sortira si vous le cherchez.

Pourquoi as-tu vécu une période aussi difficile?

(1) Plusieurs problèmes se sont produits en même temps.

Conflit de version Javassist et PowerMock et Eclemma "problème de couverture 0%"

Indirectement, car la version Eclipse est trop ancienne et il n'y a pas de Maven dans l'environnement de développement Il était très difficile d'installer des plug-ins et des bibliothèques, et il y avait des problèmes.

Même si c'est un problème trivial un par un Si plusieurs occurrences se produisent, le temps requis pour la résolution augmentera immédiatement.

② Les informations sont enterrées car elles ont déjà été résolues

Pour JUnit 5 et versions ultérieures, le problème de «couverture 0%» de PowerMock et Eclemma a été résolu.

En d'autres termes, il a été résolu il y a deux ans dans le monde, donc si vous utilisez ces deux mots-clés maintenant, La façon d'écrire RunWith sans utiliser l'annotation Rule est plus efficace. (Cela semble ennuyeux d'écrire dans Rule)

Serpentin

J'ai eu du mal à en faire une procédure, mais ce groupe de cadre de test Je ne sais pas s'il sera adopté comme je l'ai suggéré.

Surtout, on dit que "une couverture à 100% est essentielle", j'ai donc un mauvais pressentiment.

Postscript

Après tout, "Ecrire un test prend du temps, alors faisons un test manuel". Je suis arrivé à la conclusion.

Quel genre de jugement! Je veux dire, je fais un cas de test manuel! Je déteste ça! !!

Recommended Posts

Une histoire sur la difficulté à aligner un cadre de test avec Java 6
Une histoire sur le développement de ROS appelé rosjava avec java
[Note] Une histoire sur la modification des outils de compilation Java avec VS Code
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Une histoire sur la prise en charge de Java 11 pour les services Web
Une histoire sur le JDK à l'ère de Java 11
Histoire d'essayer de faire fonctionner le fichier JAVA
[PHP] Histoire de la sortie de PDF avec TCPDF + FPDI
Une histoire d'essayer de s'entendre avec Mockito
Une histoire sur l'effort de décompiler les fichiers JAR
Une histoire sur la réduction de la consommation de mémoire à 1/100 avec find_in_batches
Une histoire sur l'introduction d'Evolutions dans le cadre de jeu
Histoire de créer une application de gestion de tâches avec Swing, Java
À propos du comportement lors de la création d'un mappage de fichiers avec Java
Une histoire confuse sur un opérateur ternaire avec plusieurs expressions conditionnelles
Une histoire de malentendu sur l'utilisation du scanner Java (mémo)
Remarques sur Java GC
Rationalisez les tests Java avec Spock
Une histoire bloquée avec NotSerializableException
Une histoire que j'ai eu du mal à défier le pro de la concurrence avec Java
En savoir plus sur les points de sauvegarde des transactions (avec Java)
Histoire vraiment effrayante (anti-motif Java)
À propos de l'authentification par signature avec Java Time 1
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
Une histoire sur un projet Spring Boot écrit en Java qui prend en charge Kotlin
[Débutant] Histoire de commencer à étudier Java pour la recherche d'emploi ~ 2e mois ~
[Débutant] Une histoire sur le début de l'étude de Java pour la recherche d'emploi ~ 1er mois ~
[Débutant] Une histoire sur le début de l'étude de Java pour la recherche d'emploi ~ 5ème mois ~
[Débutant] Une histoire sur le début de l'étude de Java pour la recherche d'emploi ~ 4ème mois ~