DAO層とは
「第1回:DBUnitって何?」では、DBUnitの特徴について解説致しました。今回はDBUnitをインストールし、事前準備としてテストデータを作成していきます。
その前にDAO層単体テストについて少し解説しましょう。DAOとはData Access Objectの略で、その名の通りデータベースにアクセスする箇所を指します。またDAO層はインテグレーション層とも呼ばれます。
通常Webアプリケーションは、「プレゼンテーション層」「ビジネスロジック層」「DAO層(インテグレーション層)」の3つの層に分かれます。
プレゼンテーション層とは、ユーザからのオペレーションを受け付けるユーザインターフェース部分です。ビジネスロジック層は、プレゼンテーション層とインテグレーション層の中間に位置する層です。DAO層(インテグレーション層)は、データベースにアクセスする部分となります。
例として、皆さんがキーワードを入力して、ヒットした検索結果を一覧画面として表示する場合で考えてみましょう。
まず、一覧画面からキーワードを受け付けて、入力された情報をビジネスロジック層に受け渡しを行う部分がプレゼンテーション層になります。次に、プレゼンテーション層から渡って来た情報(例では検索キーワード)を分析し、要求された内容に従って必要な情報を得るためDAO層に依頼を行う部分がビジネスロジック層になります。最後に、ビジネスロジック層から渡って来た情報でデータベースを検索し、HITした結果を返す部分、このデータベースにアクセスする部分がDAO層です(図1)。
(画像をクリックすると別ウィンドウに拡大図を表示します)
DAO層単体テストについて
DAO層が他の層と決定的に違うのは「データベースにアクセスする」という部分です。データベースにアクセスするということは、データベースに正しくコネクションが張れるか、そもそもSQL文が正しいか(文法的に間違っていないか)など、データベースにアクセスしてみないと分らない点がDAO層の単体テストには存在するということです。
モックを使ったテスト、つまりDAO層プログラムのデータベースにアクセスする箇所をモックオブジェクトで切り離し、残ったロジックのテストを行う場合、データベースにアクセスする箇所のテストは、次のフェーズの結合テストで行います。つまり、単体テストで発見されるべきバグ(障害)は次フェーズへ持ち越しとなってしまいます。
ビジネスロジック層のプログラムの場合、関連するオブジェクトすべてをモックオブジェクトで代用し、テストしていない箇所が残らないようにすることが可能です。ところが、DAO層のプログラムの場合、上記のようにモックオブジェクトで置き換えたテストを行った場合、データベースアクセスでの動作確認が検証できない点が存在する、厄介なテストと言えるでしょう。
では、この厄介なDAO層単体テストを実施するために、早速DBUnitをインストールしてみましょう。次ページで手順を説明します。 次のページ