読者です 読者をやめる 読者になる 読者になる

Java用Mockライブラリの近況。

技術情報 Java

Test Tool Advent Calendar 2015の3日目です。Javaで使用できるMockライブラリの現状をお伝えします。ググッて観測できた範囲なので、全部は網羅できていないです。なお、自分はここ3年ほどはJavaを使った開発から遠ざかっているので、最近のはやりはお伝えできないです、ごめんなさい。

Mockライブラリ一覧

名称 最終更新日 URL
mockito 1.10.19:2015-06-15
2.0.31-beta:2015-07-21
http://mockito.org
EasyMock 3.4:2015-09-05 http://easymock.org
jMockit 1.202015-10-25: http://jmockit.org
jMock 2.6.1:不明
1.2.0:不明
http://www.jmock.org
Unitils 3.3:2011-12-22 http://www.unitils.org/summary.html
PowerMock 1.6.3:2015-10-02 https://github.com/jayway/powermock

mockito

個人的に、一番知名度が高いMockライブラリだと思う。2008年9月にGoogle トレンドに登場して以来、破竹の快進撃で他のMockライブラリの追随をゆるさない。世界的に大人気。ゆえに国内・国外ともに情報が豊富。Javaによる開発に携わったことのある人なら、一度は触れたことがあるだろう。
なお、日本では2013年5月からGoogle トレンドに登場する。最近はjMockitがわずかに追い上げている感じ。
1.10系と2.0系が存在するが、どちらも現時点で開発が継続されている。2.0系はJava8対応らしいです。

EasyMock

2005年2月にGoogle トレンドに登場していることから、古参なMockライブラリと言える。ググっていると、しばしばmockitoと比較されている。2010年8月以降、トレンドではmockitoに逆転されており、その後は下降の一途。
日本では、mockitoよりも前の2011年7月にGoogle トレンドに登場するが、その後にまったく登場しないことからあまり定着しなかったのかも?
開発は継続されており、3.3.1からJava8に対応したみたいです。

jMockit

リリースノートを見ると、2006年6月2日からリリースしているようなので、意外と古いMockライブラリ。Google トレンドに登場するのは、mockitoと同時期ぐらい。Mocking Toolkit Comparison Matrixでもっとも多機能を謳っている。
日本では2013年11月からGoogle トレンドに出現して、mockito程ではないにしてもそこそこ人気がありそうな感じ。
今でも開発は継続されているが、Java8に正式対応しているかはよくわからない。なお、Java5はそのうちサポート対象外になるようだ。

jMock

一覧表にあげたライブラリの中では最古参?2004年11月からGoogle トレンドに登場している。mockito登場とともに徐々に失速していて、現在ではほとんど使用されていないのかも?2.6系と1.2系があるが、どちらも現在は更新されているのか不明。
日本ではトレンドにあがってきていないので、開発現場ではほとんど使用されることがなかったのかもしれない。ググるとでてくる記事は少ないし、でてきても2010年以前が多い感じ。

Unitils

今回の調査で初めて知ったMockライブラリ。Google トレンドの初出が2007年12月なので意外と古い。日本ではトレンドにあがっていないし、ググってもこちらの記事でしか取り上げられていなかったので、おそらくほとんどの人が知らないのかも。
サイトのヘッダー付近では「Last Published: 2015-03-30 | Version: 3.3」となっているが、リリースノートでは「2011-12-22」と表記されており、現在でも開発が継続しているのか不明。

PowerMock

EasyMockやmockitoを拡張する位置づけのMockライブラリ。2009年8月からGoogle トレンドに登場し、定着している模様。ただ、日本ではトレンドにあがっていないので、あまり知られていないのかも?
現在でも開発が継続されており、1.5.4や1.5.6でJava8に関する不具合を解決していることから、Java8に対応しているようだ。

まとめ

ライブラリごとにどういった機能が使えるのかという点には踏み込みませんでしたが、更新頻度やJava8への対応状況、情報量からみてmockito+PowerMockが今でも無難な選択肢と言えるでしょう。次点でEasyMock+PowerMock、これらで不足しているようであればjMockitを検討するといった感じでしょうか。


近年、新しいMockライブラリが登場していないように見受けられるので、この界隈は成熟しきったのかもしれないですね。
それではみなさん、よいテストライフを!