Javaを使って企業システムなどのソフトウエアを開発する場合,クラスの依存性が問題になることがよくあります。例えば,あるクラス(クラス1)が機能するために別のクラス(クラス2)が必要だとします。この場合,クラス2がまだ実装されていないと,クラス1の動作を確認できません。つまり,クラス2が完成するまでクラス1の開発が止まってしまいます。
この問題を解決するために使われるのが「モック」と呼ばれる偽のクラスです。モックは,内部のロジックは実装されていませんが,外からは正しく動くように見えます。モックが本物のクラスの振る舞いをまねることで,本物のクラスが未完成でも,それに依存するクラスの開発を進めることができます。
ただ,モックを手作業でいちいち記述するのは面倒です。そこで,モックの生成ツールが使われることがあります。従来のモック生成ツールは,モックのための特別なコードを記述する必要がありました。利用するには,ソフトの開発者がそのツールのためのコードの書き方を勉強しなければなりません。また,この特別なコードは「資産」として再利用できないため,せっかく手間をかけて記述しても,あとで破棄することになるという問題もあります。
では,不要になる「特別なコード」ではなく,再利用性の高い「テスト・コード」からモックを生成すればどうでしょう。このような発想から生まれたのが機械猫モッカーです。機械猫モッカーは,Javaのユニットテストのフレームワークとして広く普及しているJUnitのテストケースからモックを自動生成します。
テスト・コードには,テスト対象がどのように動作すべきかという「仕様」が記述されています。機械猫モッカーは,これを逆手に取ってモックの生成に利用します。テストを仕様とみなすのは,テスト駆動開発(Test-Driven Development:TDD)に通じる考え方であり,実際,機械猫モッカーはTDDの際に用いるのに適しています。
最初のバージョンが公開されたのは2005年3月です。2005年6月にオープンソース化されました(ライセンスはCPL:Common Public Licence)。また,2006年度上期の「未踏ソフトウェア創造事業」に採択されています。
機械猫モッカーは,Eclipseのプラグインとして利用できます。インストールは,Eclipseのpluginsフォルダに配置するだけです。プラグインとしてではなく,コマンドラインから利用することも可能です。
●テストケースのみ テスト対象がないのでテスト失敗(レッド) |
●テストケース+モック モックがテストをクリア(グリーン) |
図1●機械猫モッカーを使ってテストケースからモックを生成 |
機械猫モッカー ジャンル:モック自動生成ツール 開発:伊尾木将之氏(本体), 河野広伸氏(プラグイン) URL:http://kikainekomocker.hp.infoseek.co.jp/ |