KikainekoMocker

モッカーの仕様

機械猫モッカー仕様

機械猫モッカーはJava1.4の文法にそった解析を行いますが、完全ではありません。ここでは細かな差異を示します。

プリミティブ型

モッカーでは全てのプリミティブ型を扱えるわけではありません。具体的には以下の型を扱えます。
  • int型
  • float型(1.0fのような形式以外は対応していません)
  • long型
  • double型(1.0、1.0dのような形式以外は対応していません)
  • char型
  • boolean型

オブジェクト型

モッカーで基本的に任意のオブジェクト型を取り扱うことができます。
ただし、以下の条件を持つオブジェクトは取り扱いに脆弱性が存在します。 多くの場合、問題になりませんが、気をつけてください。
  • 内部に循環参照を持つオブジェクト
  • コンストラクタの引数の型がインターフェース・アブストラクト型で指定されている

テストケースに関する注意点

機械猫モッカーは、オブジェクト型を返すメソッドを実装しますが
返すクラスがequalsメソッドをオーバーライドしていないとテストはパスしません。

例えば、

Integer i=new Integer(10);
assertEquals(i,target.getInt(10));

を読み込むと、Integer型を返すgetIntメソッドを実装します。
そして、Integerはequalsメソッドをオーバーライドしているため、テストはパスします。

ですが

StringBuffer sb=new StringBuffer("test");
assertEquals(sb,target.getSb("test"));

の場合、機械猫モッカーはsbと同等なオブジェクトを返しますが、
StringBufferがequalsメソッドをオーバーライドしていないため、テスト自体は失敗してしまいます。

機械猫モッカーは期待値に入れられたオブジェクトのtransientとstatic、final以外の全ての
フィールド変数を参照し、その値と同じフィールドを持つオブジェクトを返します。
(ハッシュコードまでは同一ではありませんので、equalsメソッドがオーバーライドされていないと失敗します)

テストケースに対する制限

テストケースには以下の制限が課せられています。
これらのうちのいくつかは将来取り除かれますが、気をつけてください。

  • クラス変数に、モック対象のクラスを必ず宣言してください。この宣言でモック対象を判断しています。
    また、必ずsetUpメソッドかtestメソッド内でインスタンス化してください。
  • setUpメソッドは必ずオーバーライドしてください。逆にtearDownメソッドはオーバーライドしないで下さい。
  • モック対象以外のクラス変数は書かないでください。
  • モック対象のstaticメソッドには対応できません。
  • 多次元配列も使用できません。
  • キャストもしないで下さい。
  • コンストラクター・メソッド以外呼び出さないでください。
  • assertEquals( expected , actual )という形式以外使用できません。
    つまり、assertTrueなどのassertメソッドは解析しません。
    また、必ず期待値、実測値の順に書いてください。
  • 返り値があるメソッドは、assertEqualsで明示してください。(assertEqualsにないとvoidと判断されてしまいます。)
  • for文・if文・while文・switch文などの制御構造文、省略記法は使用できません。
  • デフォルト・パッケージは避けてください。