連載
|
![]() |
|
4. データアクセス層でのテストファースト
![]() |
データアクセス層は、データベースやファイルシステムなどのデータ・ストアに対してアクセスを行うクラス群のことだ。データアクセス層でのテストファーストのツールは特に存在しないので、データアクセス技術を組み合わせて行う必要がある。 そこで今回は、SQL Server 2005の新機能であるファイル・アタッチ機能と.NET Framework 2.0の新機能である自動トランザクションを利用したデータアクセス層でのテストファーストの実現方法を紹介する。 なお先ほどのNUnitFormsの説明では.NET Framework 1.1を使用したが、以降では.NET Framework 2.0が必要だ。従って以降では、Visual Studio 2005 Professional Edition日本語版を使って説明する。 |
●ファイル・アタッチ機能の利用
![]() |
ここでいうファイル・アタッチ機能とは、SQL Server 2005 Express Editionのみの新機能で、必要なときだけデータベース・ファイル(.MDFファイル)をSQL Serverに直接アタッチ(=接続)し、データベースとして利用する機能である(以前は、このような自動的なアタッチ/デタッチはできなかった)。このファイル・アタッチ機能を利用することで、開発クライアントへのテスト用データベースの配布を容易に行える。ファイル・アタッチ機能の詳細については、下記のサイトを参照してほしい。 テスト・コードは、振る舞いが予測できるものでなければ記述できない。つまりデータベースのように、時間とともにデータの内容が変化していくものに対してテスト・コードを書くには、何らかの工夫を加える必要が生じる。その手段の1つがテスト用データベースの作成と配布なのだ。 ファイル・アタッチ機能を利用したテスト用データベースを構築するには、まずVisual Studio 2005[ソリューション エクスプローラ]でSQL Serverデータベース・ファイルをプロジェクトに追加する。ちなみに、SQL Server 2005 Express Editionは、Visual Studio 2005をインストールするとデフォルトで一緒にインストールされる。
この画面で特に重要なのは、[出力ディレクトリにコピー]プロパティを「常にコピーする」(デフォルト)に設定することだ。これにより、ビルドするたびにデータベース・ファイルが初期状態に戻る。 データベース・ファイルを追加する際には、[データ ソース構成ウィザード]ダイアログが表示されるので、そこで利用するテーブルなどのデータベース・オブジェクトを選択してデータセットを作成する。本稿の場合、これにより(上の画面でも分かるように)「MemberDataSet.xsd」が生成された。このデータセット(MemberDataSet.xsd)をダブルクリックすると、次の画面のように.xsdファイル(データセット)のデザイナが立ち上がる。また、追加したデータセットに対してテーブル・アダプタが自動作成されていることが確認できる。
今回は、このテーブル・アダプタを利用して、テスト用データベースへアクセスする仕組みを実現する。 通常はこの段階で、テーブル・アダプタのConnectionプロパティ(のConnectionStringプロパティ)に、データベース・ファイルへの接続文字列(例えば次のような値)が自動的に設定されている。
しかしファイル・アタッチ機能を利用するためには、この接続文字列で「Data Source=.\SQLEXPRESS」や「AttachDbFilename」を指定する必要がある(そのほかの制約については、前述のサイトを参照してほしい)。 上記のテーブル・アダプタを利用したテスト・コードを以下に示す。なおこのサンプル・コードをコンパイルするには、事前に「nunit.framework」アセンブリと「System.Transactions」アセンブリへの参照が必要だ。
このテスト・コードのNUnit-Guiでの実行結果は次の画面のようになる。
ここでは、SQL Server 2005 Express Editionのファイル・アタッチ機能を利用してテスト用データベースを実現する方法を紹介した。これに加えて、ビルド・ツールであるNAntなどを利用してデータベース管理者が管理しているテスト用データベースのデータベース・ファイルを各開発者の開発クライアントへ配布する仕組みも実現するとよいだろう。 |
●自動トランザクション機能の利用
5. まとめ
さて、今回はNAgileの設計に対する考え方や実践方法について考えてみた。常に、現時点の問題を解くシンプルな設計を心掛け、設計を改善するということの有効性と重要性を実感していただきたい。そしてこれを実現する近道であるテストファーストにぜひトライしてほしい。
次回はビルドの自動化(NAnt)について解説する予定だ。お楽しみに。
(Illustrated by 正木茶丸)
![]() |
INDEX | ||
NAgileで始める実践アジャイル開発 | ||
第3回 ソフトウェアの良い設計を行うコツ | ||
1.NAgileにおける設計のコツ「インクリメンタル設計」 | ||
2.テストファーストの基礎ツール | ||
![]() |
3.データアクセス層でのテストファースト | |
![]() |
![]() |
「NAgileで始める実践アジャイル開発」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |