KikainekoMocker

Java

Mock

機械猫モッカー

モック

モッカーが動ないときの対処方法

ここでは、機械猫モッカーを使おうとしたけど「上手く動かない!!」という場合の対処方法を記述します。

どんな状がでてますか?

ここではモッカーが動かない状態から対処方法を見ていきましょう。以下の症状に該当するリンク先に飛んでください。

Testクラスをクリックしても「機械猫モッカー」が出ない!

この症状で最も多いのは、「Testクラス以外を右クリックしていた」というものです。

  • 対象のクラスの名前が「***Test」とTestという名前で終わっているかどうか確認してください
  • 対象のクラスが「TestCase」を継承しているかどうか確認してください

Testクラスを正しく指定しているにも関わらず、「機械猫モッカー」が出てこない場合は、恐らく機械猫モッカーのインストールに失敗しています。
以下のことを確認し&試し見てください。

★正しくpluginsフォルダーに配置されていますか?
 ・ダウンロードしたzipのまま配置していませんか?
  →zipを解凍したフォルダを配置してください。
 ・該当のpluginsに配置していますか?
  →複数のEclipseが存在する場合、間違ったpluginsに配置することがあります。

★JDK、Eclipseのバージョンは古くないですか?
 →機械猫モッカーはJDK1.4以上、Eclipse3.2を基本環境として検証しています。
  ただEclipse3.1でも動作可能であることは確認していますが、Eclipse2以前の環境では恐らくpluginが正しく動作しません。
  その場合はすいませんが、JDK、Eclipseともにバージョンをあげてください。

それでも上手くいかない場合は、インストール対処法を試してみてください。

機械猫ッカーの実行中にエラーが起きる!

このような症状が起きる原因は、大きく2つに分けるとplugin側の原因である場合とテストケースの記述が妥当ではない場合です。

★テストケースの記述が妥当でない
テストケースの記述に関してはモッカーの制約などを参照し、修正してください。 記述が許されていないテストケースの書き方を行うと、例外が発生し処理が中断されますので、注意してください。
あるいは、間違ってテストケースを保存しないまま実行していないか確認してください。

★plugin側が原因
pulgin側が原因である場合、多くの場合は正しくインストールされていないことが原因です。
インストール対処法を試してみてください。

機械猫ッカーの生成したクラスを実行してもレッドのままだ!

この症状の最も多いパターンは、JUnitのassertEqualsの実装が原因の場合です。 その他の原因としては、モッカーが正しくコードを生成できなかった場合とに分かれます。
あるいは、モッカーが生成したコードがEclipseに正しく反映されていない場合もあります。

★JUnitが原因
JUnitのassertEqualsの実装が原因の場合というのは、モッカーが生成した擬似クラスは正しく動作しているけれどもテストが失敗する場合です。
これはassertEqualsにオブジェクト型のデータを突っ込んだ際に起こります。 デフォルトのassertEqualsの実装では引数がオブジェクト型の場合、単純にオブジェクト型のequalsメソッドを呼び出すだけです。 そして、デフォルトのequalsメソッドの実装はhashCodeの比較を行っているだけですので、通常equalsメソッドをオーバーライドしていないオブジェクトは失敗します。
これを回避することはできません。テストケースを書き換えるか、何とかしてequalsメソッドを書き換えるかする必要があります。 あるいは、Testはredのままでも問題なくオブジェクトを生成していますので、redを無視したまま擬似クラスを使用することもできます。

★モッカーが原因
モッカーはまれに何のエラーも出力せずに正しく動作しないコードを生成することがあります。
これは、モッカーが許可していないテストの記述を行っている場合に起こります。モッカーが許可していないテストの記述は多くの場合モッカーがエラーであることを通知しますが まれに、エラーが起きず解析が通ってしまうことがあります。これはモッカーがコード生成速度を確保するためにあまり厳密なチェックを行っていないためです。

★Eclipseに正しく反映されていない場合
プロジェクトを再ビルドしてください。(F5のショートカットがありますね)

イントール対処法

インストールに失敗した場合の多くは、バージョンの古いモッカーへの参照が残っている場合です。
まずはプロジェクトに古い参照が残っていないか確認してください。

そして、以下の方法でEclipseを起動してください。

  1. eclipse.exeを右クリックし、eclipse.exeへのショートカットを作成します
  2. 作成したショートカットのプロパティを開きます
  3. プロパティの中のリンク先に「-clean」を追記します。(例:「C:\eclipse\eclipse.exe -clean」)
  4. ショートカットをダブルクリックしてEclipseを起動します

まぁ早い話が、「-clean」を付けてExlipseを起動するだけなんですが…

それでもかない場合

どうしても動かない場合は、恐らくプラグイン側のバグです。 この場合はMLで質問していただくか開発者のブログに書き込むかしてコンタクトしてださい。

また問題が解決するまではすいませんがplugin側からの呼び出しを避け、テキストUIから呼び出す方法を試しください。