jp.terasoluna.fw.ex.unit.testcase
クラス MockDaoInjectedTestCase

java.lang.Object
  上位を拡張 junit.framework.Assert
      上位を拡張 junit.framework.TestCase
          上位を拡張 org.springframework.test.ConditionalTestCase
              上位を拡張 org.springframework.test.AbstractSpringContextTests
                  上位を拡張 org.springframework.test.AbstractSingleSpringContextTests
                      上位を拡張 org.springframework.test.AbstractDependencyInjectionSpringContextTests
                          上位を拡張 jp.terasoluna.fw.ex.unit.testcase.MockDaoInjectedTestCase
すべての実装されたインタフェース:
junit.framework.Test

public abstract class MockDaoInjectedTestCase
extends org.springframework.test.AbstractDependencyInjectionSpringContextTests

業務ロジック試験支援テストケース。

 本試験では前処理中にSpringのApplicationContextを作成します。
 作成時には次の設定ファイルを読み込みます。
 
設定ファイル デフォルト値 変更ポイント 備考
モックDAO定義ファイル mockDaoBeans.xml(jarに同梱されている) terasoluna-unit-override.propertiesの以下にキーに対する値を設定することで、変更可能です。
mockDaoBeans.xml → mockdaobeans.fileキー
各モックDAOのBeanIDやFQCNを変更する場合はmock-dao-beans-override.propertiesをクラスパス上に配置し、 上書き設定を行ってください。
ファイルが存在しない場合、無視します。コンストラクタにてsetLoadDefaultConfig(boolean) でfalseを設定した場合またはisLoadDefaultConfig()がfalseを返すようにオーバライドした場合、読み込みません。
モジュールBean定義ファイル WebContext/WEB-INF/moduleContext.xml terasoluna-unit-override.propertiesの以下にキーに対する値を設定することで、変更可能です。
WebContext → webapp.pathキー
WEB-INF → webinf.dirキー
moduleContext.xml → modulecontext.fileキー
ファイルが存在しない場合、無視します。コンストラクタにてsetLoadDefaultConfig(boolean) でfalseを設定した場合またはisLoadDefaultConfig()がfalseを返すようにオーバライドした場合、読み込みません。
試験毎Bean定義ファイル なし addConfigLocations(List) メソッドで読み込むBean定義ファイルパス(クラスパス相対)を追加します。引数のリストに追加したいファイルのパスをaddしてください。 ファイルが存在しない場合、 BeanDefinitionStoreException をスローします。
 読み込んだBean定義ファイルに定義したBeanを試験コード中で使用する場合、以下の二種類のBean取得方法があります。
 
 1. BeanFactory.getBean(String)によって取得する方法
 2. setterを定義してautowire(by type)する方法
 
 以下のような定義がある場合を例にとって説明します。
 
 WEB-INF/foo/fooContext.xml
 
 <!-- 前後略 -->
 <bean id="foo" class="com.example.Foo" />
 <bean name="/foo" class="com.example.FooBLogic" />
 
 1. BeanFactory.getBean(String)によって取得する方法
 
 public FooTest extends MockDaoInjectedTestCase {
   public void testDoSomething() throws Exception {
     Foo foo = getBean("foo");
     // あるいは Foo foo = (Foo) applicationContext.getBean("foo");
     int result = foo.doSomething();
     assertEquals(1, result);
   }
 }
 
 public FooBLogicTest extends MockDaoInjectedTestCase {
   public void testFoo()  throws Exception {
     FooBLogic foo = getBean("/foo");
     // あるいは FooBLogic foo = (FooBLogic) applicationContext.getBean("/foo");
     BLogicResult result = foo.execute(null);
     AssertUtils.assertBLogicSuccess(result);
   }
 }
 
 取得するBeanのインターフェイスにAOP処理を設定している場合は、変数の型をAOP対象のインターフェイスにする必要があります。
 
 2. setterを定義してautowire(by type)する方法
 取得したいBeanのセッターを定義してください。
 
 public FooTest extends MockDaoInjectedTestCase {
   private Foo foo;
   
   public void setFoo(Foo foo) {
     this.foo = foo;
   }
  
   public void testDoSomething()  throws Exception {
     int result = foo.doSomething();
     assertEquals(1, result);
   }
 }
 
 public FooBLogicTest extends MockDaoInjectedTestCase {
   private FooBLogic foo;
   
   public void setFoo(FooBLogic foo) {
     this.foo = foo;
   }
   
   public void testFoo() throws Exception {
     BLogicResult result = foo.execute(null);
     AssertUtils.assertBLogicSuccess(result);
   }
 }
 
この方法は以下の場合には利用できません。
 ・Bean定義ファイル中に同じ型のBeanが複数定義されている場合
 ・AOP処理によりApplicationContextからProxy実装クラスとして取得される場合
 
 QueryDAO/UpdateDAO/StoredProcedureDAO/QueryRowHandleDAOが設定されたBeanを
 MockDaoInjectedTestCaseの前処理で作成されたDIコンテナから取得した場合、それぞれのモックがインジェクションされます。
 インジェクションされた各モックはgetMockXxxDAO()メソッドまたはprotectedなフィールドmockXxxDAOにより取得できます。
 (XxxにはQuery、Update、QueryRowHandle、StoredProcedureが当てはまります)
 
 MockUpdateDAO例
 
 public FooTest extends MockDaoInjectedTestCase { 
   
   public void testFoo()  throws Exception {
     FooBLogic foo = getBean("/foo");
     mockUpdateDAO.addResult(1);
         
     BLogicResult result = foo.execute(null);
     AssertUtils.assertBLogicSuccess(result);
   }
 }
 
 mock-dao-beans-override.propertiesで行える上書き設定
 
キー 上書きできる設定
queryDAO.id MockQueryDAOのBeanID
updateDAO.id MockUpdateDAOのBeanID
queryRowHandleDAO.id MockQueryRowHandleDAOのBeanID
spDAO.id MockStoredProcedureDAOのBeanID
 本クラスを継承したテストは以下の様に処理が行われます
 
 - 前処理
 -- WEBAPディレクトリ(コンテキストルート)のクラスパスへの追加(TestCaseUtils.getConfigLocationsForDaoTestCase(String[]))
 -- Bean定義ファイル読み込み前処理(beforeGetConfig())
 -- デフォルトで使用するBean定義ファイル追加
 -- 読み込むBean定義ファイル追加(addConfigLocations(List))
 -- ApplicationContext作成
  
 - 試験実行
 
 - 後処理
 -- 各モックDAOの初期化
 
 


フィールドの概要
protected  MockQueryDao mockQueryDAO
          モック参照系DAO。
protected  MockQueryRowHandleDao mockQueryRowHandleDAO
          モック行データハンドラDAO。
protected  MockStoredProcedureDao mockStoredProcedureDAO
          モックストアドプロシージャDAO。
protected  MockUpdateDao mockUpdateDAO
          モック更新系DAO。
 
クラス org.springframework.test.AbstractDependencyInjectionSpringContextTests から継承されたフィールド
AUTOWIRE_BY_NAME, AUTOWIRE_BY_TYPE, AUTOWIRE_NO
 
クラス org.springframework.test.AbstractSingleSpringContextTests から継承されたフィールド
applicationContext
 
クラス org.springframework.test.ConditionalTestCase から継承されたフィールド
logger
 
コンストラクタの概要
MockDaoInjectedTestCase()
           
 
メソッドの概要
protected  void addConfigLocations(List<String> configLocations)
          読み込むBean定義ファイルパスを追加します。
protected  void beforeGetConfig()
          Bean定義ファイルパス取得前処理。
<T> T
getBean(String name)
          Beanを取得します。
protected  String[] getConfigLocations()
           
protected  String getConfigPath()
           
 MockQueryDao getMockQueryDAO()
          モック参照系DAOを返却します。
 MockQueryRowHandleDao getMockQueryRowHandleDAO()
          モック行データハンドラDAOを返却します。
 MockStoredProcedureDao getMockStoredProcedureDAO()
          モックストアドプロシージャDAOを返却します。
 MockUpdateDao getMockUpdateDAO()
          モック更新系DAOを返却します。
 boolean isLoadDefaultConfig()
          デフォルトのBean定義ファイルを読み込むかどうかを取得します。
protected  void onTearDown()
           
 void setLoadDefaultConfig(boolean loadDefaultConfig)
          デフォルトのBean定義ファイルを読み込むかどうかを設定します。
 void setMockQueryDAO(MockQueryDao mockQueryDAO)
          モック参照系DAOを設定します。
 void setMockQueryRowHandleDAO(MockQueryRowHandleDao mockQueryRowHandleDAO)
          モック行データハンドラDAOを設定します。
 void setMockStoredProcedureDAO(MockStoredProcedureDao mockStoredProcedureDAO)
          モックストアドプロシージャDAOを設定します。
 void setMockUpdateDAO(MockUpdateDao mockUpdateDAO)
          モック更新系DAOを設定します。
 
クラス org.springframework.test.AbstractDependencyInjectionSpringContextTests から継承されたメソッド
getAutowireMode, injectDependencies, isDependencyCheck, isPopulateProtectedVariables, prepareTestInstance, setAutowireMode, setDependencyCheck, setPopulateProtectedVariables
 
クラス org.springframework.test.AbstractSingleSpringContextTests から継承されたメソッド
contextKey, createApplicationContext, createBeanDefinitionReader, customizeBeanFactory, getApplicationContext, getConfigPaths, getLoadCount, loadContext, loadContextLocations, onSetUp, prepareApplicationContext, setDirty, setUp, tearDown
 
クラス org.springframework.test.AbstractSpringContextTests から継承されたメソッド
addContext, contextKeyString, getContext, hasCachedContext, isContextKeyEmpty, setDirty
 
クラス org.springframework.test.ConditionalTestCase から継承されたメソッド
getDisabledTestCount, isDisabledInThisEnvironment, recordDisabled, runBare
 
クラス junit.framework.TestCase から継承されたメソッド
countTestCases, createResult, getName, run, run, runTest, setName, toString
 
クラス junit.framework.Assert から継承されたメソッド
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

mockQueryDAO

protected MockQueryDao mockQueryDAO
モック参照系DAO。


mockUpdateDAO

protected MockUpdateDao mockUpdateDAO
モック更新系DAO。


mockQueryRowHandleDAO

protected MockQueryRowHandleDao mockQueryRowHandleDAO
モック行データハンドラDAO。


mockStoredProcedureDAO

protected MockStoredProcedureDao mockStoredProcedureDAO
モックストアドプロシージャDAO。

コンストラクタの詳細

MockDaoInjectedTestCase

public MockDaoInjectedTestCase()
メソッドの詳細

getConfigPath

protected final String getConfigPath()
オーバーライド:
クラス org.springframework.test.AbstractSingleSpringContextTests 内の getConfigPath

beforeGetConfig

protected void beforeGetConfig()
Bean定義ファイルパス取得前処理。
 DIコンテナを作成する前に実行したい処理はこのメソッドをオーバライドして実行してください。
 例:JNDIをアクティベートする等
 


addConfigLocations

protected void addConfigLocations(List<String> configLocations)
読み込むBean定義ファイルパスを追加します。
 引数のBean定義ファイルパスリストに追加したいファイルのパスをaddするようオーバーライドしてください。
 

パラメータ:
configLocations - 読み込むBean定義ファイルリスト

getBean

public <T> T getBean(String name)
Beanを取得します。

型パラメータ:
T - 取得するBeanの型
パラメータ:
name - beanのidまたはname
戻り値:
取得したBean

getConfigLocations

protected final String[] getConfigLocations()
オーバーライド:
クラス org.springframework.test.AbstractSingleSpringContextTests 内の getConfigLocations

onTearDown

protected void onTearDown()
                   throws Exception
オーバーライド:
クラス org.springframework.test.AbstractSingleSpringContextTests 内の onTearDown
例外:
Exception

setLoadDefaultConfig

public void setLoadDefaultConfig(boolean loadDefaultConfig)
デフォルトのBean定義ファイルを読み込むかどうかを設定します。

パラメータ:
loadDefaultConfig - デフォルトのBean定義ファイルを読み込むかどうか

isLoadDefaultConfig

public boolean isLoadDefaultConfig()
デフォルトのBean定義ファイルを読み込むかどうかを取得します。

戻り値:
デフォルトのBean定義ファイルを読み込むかどうか

setMockQueryDAO

public void setMockQueryDAO(MockQueryDao mockQueryDAO)
モック参照系DAOを設定します。

パラメータ:
mockQueryDAO - モック参照系DAO

getMockQueryDAO

public MockQueryDao getMockQueryDAO()
モック参照系DAOを返却します。

戻り値:
モック参照系DAO

getMockUpdateDAO

public MockUpdateDao getMockUpdateDAO()
モック更新系DAOを返却します。

戻り値:
モック更新系DAO

setMockUpdateDAO

public void setMockUpdateDAO(MockUpdateDao mockUpdateDAO)
モック更新系DAOを設定します。

パラメータ:
mockUpdateDAO - モック更新系DAO

getMockQueryRowHandleDAO

public MockQueryRowHandleDao getMockQueryRowHandleDAO()
モック行データハンドラDAOを返却します。

戻り値:
モック行データハンドラDAO

setMockQueryRowHandleDAO

public void setMockQueryRowHandleDAO(MockQueryRowHandleDao mockQueryRowHandleDAO)
モック行データハンドラDAOを設定します。

パラメータ:
mockQueryRowHandleDAO - モック行データハンドラDAO

getMockStoredProcedureDAO

public MockStoredProcedureDao getMockStoredProcedureDAO()
モックストアドプロシージャDAOを返却します。

戻り値:
モックストアドプロシージャDAO

setMockStoredProcedureDAO

public void setMockStoredProcedureDAO(MockStoredProcedureDao mockStoredProcedureDAO)
モックストアドプロシージャDAOを設定します。

パラメータ:
mockStoredProcedureDAO - モックストアドプロシージャDAO


Copyright © 2011. All Rights Reserved.