濃縮還元オレンジニュース

シンプル&タイプセーフなJava用モックライブラリ「Mockito」

Javaのモックライブラリ「Mockito」の紹介記事です。Javaのモックライブラリとして「JMock」「EasyMock」が有名ですが、APIにクセがあったり独特の手順を踏まないといけないなど、使いやすいとは言えませんでした。後発のMockitoではこれらの問題を解消しており、直感的な記述でモックの挙動を設定できます。

記事では1.8.0 RC2のバージョンを使っています。本稿執筆時点(2009年7月末)では1.8.0がリリースされていますが、1.8.0でも大きな違いはありません。

例ではDAO(Data Access Object)を使って商品を取得し、価格を計算するというサンプルを示しています。価格計算を行うクラスCalcuratorをテストしたいとすると、実際のケースではDAOはDBにアクセスするためテストデータを用意しなければならず面倒です。そこでモックを使ってDAOをDBアクセスなしに使えるようにして、テストできるようにします。MockitoでDAOのモックを作成する場合mockメソッドを使います。

ItemDao mock = mock(ItemDao.class);

そしてDAOのメソッドであるfindItem( )をどういう引数で呼び出したとき(when)にどういう値が返ってくるのか(thenReturn)を設定します。

when(mock.findItem(1)).thenReturn(
new Item(1, "WEB+DB PRESS", 1480));

後は通常どおりにテストを行い、最後にfindItem( )が正しい引数で呼び出されたかを検証(verify)します。

verify(mock).findItem(1);

Mockitoでは、実装クラスの特定の動作を置き換えるspyメソッドや、1.8から利用できる//given、//when、//thenというコメントを使ってBDD(振舞駆動開発)スタイルに記述する機能なども備わっています。Java開発をしていてまだMockitoを触ったことがない人は、ぜひ試してみることをお勧めします。

URLhttp://journal.mycom.co.jp/articles/2009/07/17/mockito/

おすすめ記事

記事・ニュース一覧