|
||||||||||||||||
| 前のページ 1 2 3 次のページ | ||||||||||||||||
| インテグレーション層の単体テスト比較 | ||||||||||||||||
|
データベースアクセスを伴うこのレイヤのテストでは、テスト前後にデータベースの適切な初期化、およびデータベースの更新を確認する手段が必要となります。 JavaはHibernateを使ったDAO、Railsはモデル(Active Record)がテスト対象となります。 |
||||||||||||||||
| Java/インテグレーション層の単体テスト | ||||||||||||||||
|
Javaのインテグレーション層にあたるDAOをテストするのは、DbUnitというテスティングフレームワークです。DbUnitはJUnitの基本的なテスト機能に加えて、このレイヤのテストに必要なテーブルの初期化や更新の確認などの機能を備えています。 このテーブルの初期状態などはXMLファイル、もしくはExcelファイルに記述することができます。リスト1はXMLを使用したテーブル初期化用のデータです。リスト2では、この初期化用データを使ってテーブルを初期化し、DAOのテストを実施しています。 リスト1:XMLを使用したテーブル初期化用データ
<?xml version="1.0" ?>
リスト2:DbUnitを使用した単体テスト
public class TodoTest extends DatabaseTestCase {
|
||||||||||||||||
| Rails/インテグレーション層の単体テスト | ||||||||||||||||
|
Railsのインテグレーション層に該当するモデルのテストは、ユニットテストが使用されます。先の「Railsの単体テスト」の項目でも解説しましたが、ユニットテストの基本的な機能は他のxUnitファミリと共通しています。 また、2つの要素がインテグレーション層のテストをサポートします。
表3:インテグレーション層のサポート テスト用データベースは、開発用や本番用のデータベースに影響を与えることなくテストを実施する仕組みです。Railsには環境モードと呼ばれている実行状況によって切り替えることができる機能があり、テスト時には、この環境モードをテストモードに切り替え、テスト用に用意されたデータベースを使用するようにします。 もう1つが、テストデータをロードする機能であるフィクスチャです。CSV形式やYAML形式などでテストデータを作成することができます。 ・リスト3:フィクスチャ(YAML形式)
wash_the_car:
リスト4:ユニットテスト
class TodoTest < Test::Unit::TestCase
ユニットテストでは「fixtures :todos」という記述によって、用意したフィクスチャによりデータベースが初期化されます。 |
||||||||||||||||
| インテグレーション層の単体テスト比較結果 | ||||||||||||||||
|
両者ともあらかじめ用意したファイルによってテーブルを初期化する仕組みがあり、非常によく似ています。インテグレーション層の単体テストについては、ほとんど差がないと言ってよいでしょう。 |
||||||||||||||||
|
前のページ 1 2 3 次のページ |
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||

