2013年9月19日木曜日

最強モックツール JMockit その6 staticクラス

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

現在はモックツール「JMockit」の使い方をご紹介しています。

今回は「staticクラス」のモック化をご紹介します。

staticクラスのモック化


staticクラスというのは、「StringUtils」とか、「FileUtils」とか、そういったタイプのクラスのことです。
staticクラスのモック化は難しいらしく、他のモックライブラリでこの機能を提供しているクラスは少ないようです。
しかし、最強モックツールであるJMockitならば簡単に出来てしまいます。

まず、本体クラスとして「StaticUtils」というサンプル用クラスを作りました。
「genesis」という文字列を返すだけの簡単なクラスです。

public class StaticUtils {

 public static String returnGenesis(){
  return "genesis";
 }

}

これをモック化すると以下のようになります。

public class StaticUtilsTest {

 /** StaticUtilsのモック  */
 @SuppressWarnings("unused")
 @Mocked
 private StaticUtils mockStaticUtils;

 @Test
 public void testReturnGenesis() {
  new NonStrictExpectations() {{
   StaticUtils.returnGenesis(); result = "ジェニシス";
  }};
        assertThat(StaticUtils.returnGenesis(), is("ジェニシス"));
 }

}


今までに紹介した書き方と殆ど同じです。強いて言えば、以下の部分でしょうか。

new NonStrictExpectations() {{
 StaticUtils.returnGenesis(); result = "ジェニシス";
}};

今までだとモック化した「mockStaticUtils」をモック対象にしていましたが、今回はstaticクラスにつき、普通に「StaticUtils.returnGenesis()」と書いています。
それ以外については、特に意識する部分はありませんね。

過去の記事も同様でしたが、ケースバイケースで書き分けねばならない難しさは余り無く、同じ要領で書き進めることが可能なのです。

終わりに


引き続き、JMockitの解析を進めます。

0 件のコメント:

コメントを投稿