第4回:DIコンテナとの比較 (2/4)

徹底比較!!Ruby on Rails vs Javaフレームワーク
徹底比較!!Ruby on Rails vs Javaフレームワーク

第4回:DIコンテナとの比較

著者:アスタリクス  大西 正太   2006/9/20
前のページ  1  2  3  4  次のページ
Java/DIのモックオブジェクト

   JavaではDIコンテナを用いることでオブジェクトのモック化が可能になります。具体的にはDIコンテナの定義ファイルをテスト用と本番用の各々に準備します。

   リスト1〜リスト7がSpring Frameworkを用いた場合のサンプルです。
リスト1:モック/本番クラス呼び出し側クラスのSpring定義ファイル
<beans>
   <bean id="authService" class="AuthService" >
      <property name="cardAuth" >
         <ref bean="creditCardAuth" />
      </property>
   </bean>
</beans>

リスト2:モッククラスが記述されたSpring定義ファイル
<beans>
   <bean id="creditCardAuth" class="CreditCardAuthMock" />
</beans>

リスト3:本番用クラスが記述されたSpring定義ファイル
<beans>
   <bean id="creditCardAuth" class="CreditCardAuthImpl" />
</beans>

リスト4:Javaでの呼び出し側クラス
public class AuthService {
   private CreditCardAuth cardAuth;
   public boolean buy(int itemNo, String cardNo){
      boolean card_result = cardAuth.auth(cardNo);
      (中略)
   }
(中略)
}

リスト5:Javaでのインターフェイス
public interface CreditCardAuth {
   public boolean auth(String cardNo);
}

リスト6:Javaでのモッククラス
public class CreditCardAuthMock implements CreditCardAuth {
   public boolean auth(String cardNo) {
   return true
   }
}

リスト7:Javaでの本番クラス
public class CreditCardAuthImpl implements CreditCardAuth {
   public boolean auth(String cardNo) {
      //クレジットカード処理を記述
   (中略)
   }
}

   テスト時にはリスト2の定義ファイルを読み込み、リスト4のAuthServiceクラスからはリスト6のCreditCardAuthMockクラスを呼び出すようにします。本番時にはリスト3の定義ファイルを読み込み、AuthServiceクラスからリスト7のCreditCardAuthImplクラスを呼び出すようにするのです。

   こうすることで、テスト中にはモックオブジェクトが呼び出しクラスに注入され、本番時には本物のオブジェクトが注入されるようにできます。

前のページ  1  2  3  4  次のページ


デル株式会社
著者プロフィール
株式会社アスタリクス  大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第4回:DIコンテナとの比較
  はじめに
Java/DIのモックオブジェクト
  Railsでモックを実現
  Java/DIのトランザクション
徹底比較!!Ruby on Rails vs Javaフレームワーク
第1回 O/Rマッピング
第2回 JSFとRailsで比較(前編)
第3回 JSFとRailsで比較(後編)
第4回 DIコンテナとの比較
第5回 テストフレームワーク
第6回 RailsとGrailsの比較(前編)
第7回 RailsとGrailsの比較(後編)
Ruby on Rails入門
第1回 Railsが注目されている理由
第2回 すぐできるアプリケーション作成
第3回 アーキテクチャと検索機能の追加
第4回 Railsでテストをしてみよう
第5回 Ajaxアプリケーションの作成
第6回 プラグインでさらに生産性アップ
第7回 Linux環境で動作させよう

人気記事トップ10

人気記事ランキングをもっと見る