ArquillianとTestNGを使用して、従来のbig fat EAR(app.ear)アプリケーションをテストしようとしています。テストを実行するには、テスト可能なwarファイル(test.war)を既存のapp.earに追加し、WildFly 10サーバーにリモートでデプロイしました。"IllegalStateException:クラス内の実行データが互換性がありません..."既存の耳のためにJacocoの例外が発生しました。
@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")));
}
私の要件の次の部分は、テストの実行後にコードカバレッジレポートを取得することです。そのために私はJacocoを使用していて、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>
ここで、app.earがデプロイされるとさえテストはうまく実行されているが、それはJacocoが「はIllegalStateExceptionで、例外失敗しているレポートを生成するために来るとき:Jacocoでクラスの互換性のない実行データを...... ... "
例外はテストケースを含むクラスにのみ適用されます。 Jacoco Maven Pluginで除外タグを使用してそのクラス(CurrencyConverterTest.class)を除外した場合、例外はなくなりますが、Jacocoによって生成されたレポートにはデータは含まれません。また、私はjacoco.execをチェックして、それが有効なデータを含んでいると言えます。
私は独自のコードを共有できませんので、githubで3つの簡単なプロジェクトを作成してエミュレートしています。
- プロジェクト1(currencycoverter):このプロジェクトには、3つのメソッドを持つリモートインタフェースを持つ1つのステートレスejbがあります。
- プロジェクト2(earapp):このプロジェクトは、プロジェクト1をejbモジュールとして使用してearファイルを作成します。
- プロジェクト3(eartest):このプロジェクトのテスト私にはプロジェクト2.
によって生成された耳が、それはそこにいくつかのバグがJacocoコードであるが、私はまた、間違っているかもしれないもののように見えます。私を助けてください。
更新:Gitのリポジトリ上の共有プロジェクトをビルドする手順
ステップ1:すべての3つのプロジェクトをチェックアウトし、EclipseプロジェクトとしてEclipseにインポートします。
ステップ2:実行のMavenコマンドプロジェクト1(currencyconverter)用クリーンinstll
ステップ3:実行のmavenコマンドきれいなパッケージプロジェクト2(earapp)について。これにより、ターゲットディレクトリにearファイルが作成されます。
手順4:ローカルマシンでスタンドアロンモードでWildFly 10を起動します。
手順5:mavenコマンドを実行して、プロジェクト3(eartest)の場合はをクリーンインストールします。これにより、手順3で生成された耳が使用され、WildFly 10アプリケーションサーバーに展開され、テストが実行されます。
Stackoverflowでは質問に2つ以上のリンクを追加できないため、プロジェクト1へのリンクはhttps://github.com/keeshaaw/currencyconverter –