■ EclEmma
* カバレッジツール * 読み方は?何エマ?「イーシーエル・エマ」?どこにも書いてない... => 以下のサイトの音声だと「エクレマ?」
https://www.howtopronounce.com/eclemma/
【1】手動インストール
* 以下の参考文献を参考になる
http://plaza.rakuten.co.jp/parallellines/diary/201501220000/
手順
[1] 以下のサイトからEclEmma(今回は、「eclemma-2.3.2.zip」) をダウンロードする
http://www.eclemma.org/download.html
[2] ダウンロードしたファイルを解凍する [3] 解凍したフォルダ「features」「plugins」を、eclipse内の「features」「plugins」に上書きする [4] コマンドプロンプトを起動し、eclipse.exe まで移動し、「eclipse.exe -clean」でeclipseを起動させる [例]~~~~~~~ cd C:\eclipse eclipse.exe -clean ~~~~~~~~~ [5] 確認として、テストのフォルダを右クリックし、[Coverage As]-[JUnit Test]を選択 => カバレッジが測定できたらOK
【2】自動インストール
[1] Eclipseを起動し、[Help]-[Eclipse Marketplace...]を選択 [2] 「Search」タブのFind欄に「EclEmma」を入力しEnterキー押下 [3] 「EclEmma Java Code Coverage 3.0.1」の「Installed」ボタン押下
参考文献
http://www.akjava.com/jp/eclipse/eclemma.html
http://javaworld.helpfulness.jp/post-66/
http://d.hatena.ne.jp/MoonMtLab/20130826/1377467826
■ 使い方
* 緑色 : 実行された行 * 赤色 : 実行されていない行 * 黄色 : 十分に条件が満たされていない行
■ カバレッジに関するあれこれ
Enumでカバレッジが100%にならない
* package 部分が赤色になっている
サンプル
// テスト対象 package com.sample.enums; // ココが赤い (Coverage : 63.8%) public enum ResultType { ERROR("E"), SUCCESS("S"); private String code; private ResultType(String code) { this.code = code; } public String getCode() { return this.code; } } // テストコード package com.sample.enums; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; import org.junit.Test; public class ResultTypeTest { @Test public void getCodeTest() { assertThat(ResultType.ERROR.getCode(), is("E")); assertThat(ResultType.SUCCESS.getCode(), is("S")); } }
原因
* values() と valueOf(String) のテストを行う必要がある。 * 以下の参考文献が非常に役に立った
https://qiita.com/nmby/items/539a45122fde2578ee99
解決例
package com.sample.enums; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; import org.junit.Test; public class ResultTypeTest { @Test public void getCodeTest() { assertThat(ResultType.ERROR.getCode(), is("E")); assertThat(ResultType.SUCCESS.getCode(), is("S")); } // ★注目★ @Test public void testValues() { assertThat(ResultType.values(), is(new ResultType[] { ResultType.ERROR, ResultType.SUCCESS })); } // ★注目★ @Test public void testValueOf() { assertThat(ResultType.valueOf("ERROR"), sameInstance(ResultType.ERROR)); assertThat(ResultType.valueOf("SUCCESS"), sameInstance(ResultType.SUCCESS)); } }
参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20071029/285773/?ST=develop&P=3
http://www.mitchy-world.jp/java/test/eclemma.htm
関連記事
【Java】 カバレッジツール ~ Cobertura 編 ~
https://dk521123.hatenablog.com/entry/2015/09/05/140100