Java テストツールのトレンド 2014/1~2016/5版
1. エコシステムに乗っかるべし
継続的インテグレーション(CI:continuous integration)は、もはや必須のプラクティスとなりました。CIを実施するにあたり、できるだけ世の中でよく使われているツールやフレームワークを使うことが、エコシステムにスムーズに乗っかっていく鍵になります。マイナーなツールやフレームワークを採用してしまった場合の問題点を挙げてみます。
- 採用したツールの開発が停滞していてバージョンアップによる恩恵が受けられない。
- 他のツールのバージョンアップに採用したツールが追従できず、他のツールのバージョンアップの恩恵が受けられない。
- 足りない機能があり社内で色々作りこんだものの、社内のスピードよりも、世の中のスピードのほうが速く、システムの改修が世の中に追従できななくなってしまう。
- CIシステムの維持が特定の人の仕事になってしまう。
- メンバーの教育が必要になってくる。
最近のソフトウェアは、企業の内部で単独で作るものではなく、OSSコミュニティーの力を活用し、Webの情報を参考にしながら開発していくものになっています。コミュニティが活発に活動しているツールやフレームワークを採用することで、よりスムーズな開発を継続していくことができるのです。
ということで、最近(2014/1~2016/5)のJava系のテストツールのトレンドをまとめてみました。
2. テスティング フレームワーク
ツールに標準で組み込まれているものを◎、各自で組み込む必要があるものを△で表示しています。Gradleは、内部にAntやJUnitを抱えているビルドツールです。Android Studioの標準のビルドツールで、Eclipseではver.4.5(Mars)から標準搭載、Jenkins ver.2では、初回起動時にプラグインのインストールを提案されます。Gradleが標準でサポートしているテストツールは、最近の傾向を反映しているため、トレンドをつかむうえで参考になります。
● 標準サポート状況
ツール | JUnit | TestNG | Spock |
---|---|---|---|
Eclipse | ◎ | △ | △ |
Gradle | ◎ | △ | △ |
● Google検索トレンド
※ 6/5に検索したため、月ごとの集計で、2016/6のデータが少なく、グラフの右端が下がります。右端の下がっている部分は、トレンド判定の上で無視してください。
3.静的解析ツール
ソースコードの問題点を指摘してくれます。保守性向上、バグ混入予防のために導入しましょう。
● 標準サポート状況
ツール | CheckStyle | FindBugs | PMD |
---|---|---|---|
Eclipse | ◎ | ◎ | △ |
Gradle | ◎ | ◎ | △ |
4.コード カバレッジ
UnitTestのコードカバレッジ集計ツールです。EclEmmaは、Eclipseのコードカバレッジプラグインで、内部にJaCoCoが組み込まれています。
● 標準サポート状況
ツール | JaCoCo(EclEmma) | Cobertura |
---|---|---|
Eclipse | △ | △ |
Gradle | ◎ | △ |
● Google検索トレンド
※ Coberturaは、ポルトガル語で「報道」。Emmaは、人名。JaCoCoのEclipseプラグインの名前がEclEmma。ズバリ比較できる検索キーワードとはなりません。
5.モック フレームワーク
現在、開発が活発に行われているのはmockitoです。
● 標準サポート状況
ツール | mockito | EasyMock | PowerMock | JMockit | JMock |
---|---|---|---|---|---|
Eclipse | △ | △ | △ | △ | △ |
Gradle | △ | △ | △ | △ | △ |
※ Pleiades Eclipseに標準インストールされている、Quick JUnit Pluginにmockitoが含まれています。 |
6.ビルドツール
Ant, Maven, Gradleを比較してみました。Gradleは、CIと相性がよいビルドツールで、最近人気上昇中です。ビルドは、内部でAntを実行、ディレクトリ構成の規約はMaven準拠しています。
● 標準サポート状況
ツール | Ant | Maven | Gradle |
---|---|---|---|
Eclipse | ◎ | ◎ | ◎ |
AndroidStudio | △ | △ | ◎ |
● Google検索トレンド
※ 2015年は、GradleがAntを上回ったターニング ポイントになりました。
6.まとめ
人気テストツールとビルドツールの関係は、このようになります。
対応表 | Ant | Maven | Gradle | Eclipse |
---|---|---|---|---|
JUnit | △ | △ | ◎ | ◎ |
CheckStyle | △ | △ | ◎ | ◎ |
FindBugs | △ | △ | ◎ | ◎ |
JaCoCo | △ | △ | ◎ | △ |
mockito | △ | △ | △ | △ |
対応表を作ってみると一目瞭然。GradleをベースにCIを組み立てれば、追加するプラグインはmockitoのみ。あっという間にエコなCIが完成です。
それでは、よいCIライフを(^^)/