1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arquillian extension jacoco で単体テストのカバレッジを出力しました。

Last updated at Posted at 2015-08-27

Arquillian と jacoco を使って Java EE アプリケーションの単体テストカバレッジを出力しました。
GitHub にソースを置きました

#環境

  1. Eclipse(Mars)
  2. WildFly 8.2.1.Final
  3. PostgreSQL

PostgreSQL は無くても大丈夫です。

#プロジェクト作成
Maven プロジェクトを新規作成して"org.wildfly.archtype", "wildfly-javaee7-webapp-archetype" を選択しました。
q1.JPG

サンプルのソースコードが生成されるので、少々手を加えて使いました。

  1. WildFly のディレクトリを src/test/resources/arquillian.xml の jbossHome に記載してください。
  2. PostgreSQL を使わない場合は src/test/resources/test-h2-ds.xmlをテストクラス(MemberRegistrationTest.createTestArchive)で使ってください。
  3. PostgreSQL を使う場合は test データベースを作成しておいてください。

Jacoco については、山pさんのページを参考にしました。
旧山pの楽しいお勉強生活 2014-07-27

最初、上記で紹介されている POM の記述をペーストして使ったのですが、target/site ディレクトリがうまく生成されませんでした。調べたところ、Arquillian extension jacoco に行き着き、最初に追記したものを消してから POM に追記しました。

注意点としては

  1. POM の profile (jacoco) の部分で "wildfly-arquillian-container-remote" を追加しました。
  2. Maven 実行時に jacoco:report オプションが必要でした。

1 については、実際の開発時にテストサーバ上で WildFly を起動したままにしてテストできるかな?と思っています。
2 については、Arquillian extension jacoco の Readme の下の方にあるコマンドを実行するだけだと site ディレクトリが生成されませんでした。

#カバレッジの結果
生成された target/site ディレクトリ配下の index.html を開くとテストのコードカバレッジが見れます。
j1.JPG

リンクをたどるとメソッドのカバレッジが見れます。
j2.JPG

setId はDBが自動採番なのでテストから外しています。さらにリンクをたどるとソースコードでテストされているか否かが色付けで見られます。
j3.JPG

色分けについては、tsubu-mustardさんの記事 WildFly+jacocoでintegration-testのカバレッジ取得 の最後で触れられています。

緑:実行された命令。
赤:実行されなかった命令。
黄:分岐において一部のみ実行された命令。

です。
今度は REST のテストをしてみようと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?