Mockito
Szczepan Faberが2008年に作った、Java随一のモックフレームワーク。依存先を代役に差し替え、データベースやネットワーク、時計から切り離してクラスをテストできるようにする。
APIは自己パロディかと思うほど読みやすい。答えを制御するには when(repo.findById(1)).thenReturn(user)、呼び出されたかの検証には verify(mailer).send(any()) と書く。前身のEasyMockとの違いは、期待値を事前に宣言する必要がないことだ。テストを実行してから検証するので、はるかに読みやすい。スパイ(一部が本物のオブジェクト)、引数キャプチャ、そしてバージョン3.4からは、以前はPowerMockが必要だったstaticメソッドにも対応している。
最もよくある批判は、モックを多用するとテストが実装の鏡になってしまうことだ。クラスの内部の動かし方を変えると、振る舞いが同じでもテストが壊れる。