J'essaie de tester une application EAR (app.ear) grosse grosse héritée en utilisant Arquillian et TestNG. Pour lancer le test, j'ai ajouté le fichier war testable (test.war) à l'app.ear existant et déployé sur le serveur WildFly 10 à distance."IllegalStateException: données d'exécution incompatibles pour la classe dans ..." exception de Jacoco lorsqu'il est exécuté pour une oreille existante
@Deployment
public static EnterpriseArchive createDeployment(){
return ShrinkWrap.createFromZipFile(EnterpriseArchive.class, new File("../earapp/target/earapp-0.0.1-SNAPSHOT.ear"))
.addAsModule(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class, "test.war")
.addClass(CurrencyConverterTest.class)
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")));
}
La prochaine partie de mon exigence est d'obtenir un rapport de couverture de code après l'exécution des tests. Pour cela j'utilise Jacoco et je l'utilise avec Jacoco Maven Plugin.
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</plugin>
Le app.ear obtient déployé et les même les essais sont en cours d'exécution, mais bien quand il vient pour générer le rapport du Jacoco est défaillant par exception et « IllegalStateException: données d'exécution incompatibles pour la classe en Jacoco ...... ... "
L'exception provient uniquement de la classe qui contient les cas de test. Si j'exclue cette classe (CurrencyConverterTest.class) en utilisant la balise d'exclusion dans Jacoco Maven Plugin, l'exception disparaît mais les rapports générés par Jacoco ne contiennent aucune donnée. Aussi j'ai vérifié jacoco.exec et autant que je peux dire qu'il contient des données valides.
Comme je ne peux pas partager le code propriétaire avec lequel je travaille, j'ai créé trois projets simples sur github pour émuler la même chose.
- Projet 1 (currencycoverter): Ce projet a un ejb sans état avec une interface distante ayant trois méthodes.
- Projet 2 (earapp): Ce projet crée le fichier ear en utilisant le projet 1 en tant que module ejb.
- Projet 3 (eartest): Ce projet tester l'oreille généré par le projet 2.
Pour moi, il ressemble qu'il ya un bug dans le code Jacoco mais je peux me tromper aussi. Sil te plait aide moi.
Mise à jour:étapes pour construire les projets partagés sur git
Étape 1: Découvrez tous les trois projets et importer dans Eclipse en tant que projets d'éclipse.
Etape 2: Lancer commande maven instll propre pour le projet 1 (ConvertisseurDevises)
Etape 3: exécution de la commande maven paquet propre pour le projet 2 (earapp). Cela créera un fichier ear dans le répertoire cible.
Étape 4: Démarrez un WildFly 10 en mode autonome sur la machine locale.
Étape 5: Exécutez la commande maven clean installez pour le projet 3 (eartest). Cela utilisera l'oreille générée à l'étape 3 et la déploiera dans le serveur d'applications WildFly 10 et exécutera les tests.
Puisque Stackoverflow ne me permet pas d'ajouter plus de deux liens dans la question, le lien vers le projet 1 est https://github.com/keeshaaw/currencyconverter –