Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

Mock Objects in Unit Tests

ONJava.comを翻訳。
実際プロジェクトでモックを使ってテストしたことがない…

Mocquerはjava.lang.reflect.ProxyをベースにしたEasyMockの拡張。
Life Cycle Control Methods

  • public void replay();
  • public void verify();
  • public void reset();

Factory Methods

  • public static MockControl createNiceControl(...);
  • public static MockControl createControl(...);
  • public static MockControl createStrictControl(...);

それぞれのファクトリメソッドに

  • public static MockControl createXXXControl(Class clazz);
  • public static MockControl createXXXControl(Class clazz,
  • Class argTypes, Object args);

がある。


モックオブジェクトのゲッター。

  • public Object getMock();


振る舞いを定義するメソッド。

  • public void setReturnValue(... value);
  • public void setThrowable(Throwable throwable);
  • public void setVoidCallable();
  • public void setDefaultReturnValue(... value);
  • public void setDefaultThrowable(Throwable throwable);
  • public void setDefaultVoidCallable();
  • public void setMatcher(ArgumentsMatcher matcher);
  • public void setDefaultMatcher(ArgumentsMatcher matcher);


パラメータとして返す値を指定する。

  • setReturnValue()


例外をスローする振る舞いを定義。

  • setThrowable(Throwable throwable)


戻り値がvoidのメソッドのために使う。

  • setVoidCallable()


ArgumentsMatcherをカスタマイズして引数の値の一致するルールを変更できる。