Arquillian チュートリアルの勉強
Java EE の単体テストのやり方を勉強していて Arquillian を知りました。
下の Getting Started が非常に丁寧で参考になりました。
http://arquillian.org/guides/getting_started_ja/
WildFly を使って作業していることもあって、上記のチュートリアルで作成した POM.xml の profile を jbossas の remote を真似て追記しました。
<profile> <id>arquillian-wildfly-remote</id> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-7.0</artifactId> <version>1.0.3.Final</version> <type>pom</type> <scope>provided</scope> </dependency> <dependency> <groupId>org.wildfly.arquillian</groupId> <artifactId>wildfly-arquillian-container-remote</artifactId> <version>1.0.1.Final</version> <scope>test</scope> </dependency> </dependencies> </profile>
WildFly 8.2.1.Final を起動しておいて、GreeterTest.java を実行したところ無事に緑のバーが出ました。
サンプルプロジェクトで試す
Maven で Java EE プロジェクト作成
Eclipse(mars) で以下の手順でプロジェクトを作成しました。
- ファイル(F) -> 新規(N) -> その他で Maven -> 「Maven プロジェクト」
- 新規 Maven プロジェクトで「フィルター」に "wildfly" を入力
- "wildfly-javaee7-webapp-archetype" 8.2.0.Final を選択
- グループ ID、アーティファクト ID を指定してプロジェクト作成
作成されたプロジェクトで POM.xml を参照すると、wildfly で remote のプロファイルが追加されていました。
<profile> <!-- An optional Arquillian testing profile that executes tests in a remote WildFly instance --> <!-- Run with: mvn clean test -Parq-wildfly-remote --> <id>arq-wildfly-remote</id> <dependencies> <dependency> <groupId>org.wildfly</groupId> <artifactId>wildfly-arquillian-container-remote</artifactId> <scope>test</scope> </dependency> </dependencies> </profile>
コードのコピー
プロジェクト内のサンプルコードを削除します。以下の2つのディレクトリ配下のファイルを手動で削除しました。
- src/main/java
- src/test/java
チュートリアルで作成した Greeter, PhraseBuilder のソースコードを src/main/java にコピーし、GreeterTest を src/test/java にコピーしました。
プロジェクトを右クリックして「Maven」から「Maven プロファイルの選択」で「arq-wildfly-remote」を選択して「OK」を押下します。
すると POM.xml で以下のエラーが・・・。
Missing artifact sun.jdk:jconsole:jar:jdk
調べてみると、eclipse.ini に vm のパスを指定しないといけないみたいです。
StackOverFlowで同じ問題にあった人の記事
-vmargs のパラメータの前に追加しました。自分はこんな感じです。
-vm C:\Program Files\Java\jdk1.8.0_51\bin\javaw.exe
eclipse を再起動してみると、POM エラーは消えました。
WildFly を起動して GreeterTest を実行したところ、無事グリーンで終了しました。
調査に時間が掛かってしまったので、同じ問題にぶつかった方たちの参考になればと思います。