システム品質向上のワザ -VSTDの単体テスト機能を極める-
Visual Studio 2005 Team Edition for Software Developersを使ってみよう(1)
ダウンロード サンプルファイル(VSTD) (22.6 KB)
ダウンロード サンプルファイル(VSTT) (75.2 KB)
周辺ファイルを利用しよう
「テスト用のデータベースファイルを使用したい!」「データベースファイルをテストの度に初期化するのが面倒!」「テスト用の構成設定を用意したい!」と思うことは多々あると思います。VSTSの単体テストではテスト専用の構成設定ファイルを利用したり、SQL Server 2005の機能を利用して初期化されたテスト専用のデータベースを使用したりすることができます。
では、まずテスト専用の設定構成ファイルの例としてapp.configの利用方法を説明します。ソリューションエクスプローラからテストプロジェクトを選択し、右クリックしてapp.configを新規に作成します。app.configにテスト専用の設定を記入したら、app.configのプロパティを開いて、「詳細」の「出力ディレクトリにコピー」を「常にコピーする」にします。この出力ディレクトリについてですが、VSTSの単体テストではテスト専用のフォルダが作成され、テスト対象のDLLやテストのDLLがコピーされます(図3)。
単体テストはこのテスト専用のフォルダで実行されるため、ここにテスト専用の周辺ファイルがコピーされるように設定を行います。app.configの場合はプロパティで「常にコピーする」を選択することでテスト専用ディレクトリにapp.configがコピーされて、テスト専用の構成設定ファイルとして利用できるようになります。
次にテスト専用のDBを利用する方法ですが、ここではSQL Server 2005のファイルアタッチ機能を利用した方法を紹介します。ファイルアタッチ機能とはSQL Serverにアタッチしていないデータベースファイルに対して、SQL Serverが動的にアタッチを行いデータベースファイルとして使用することができるようにする機能です。テストの際にテスト用データベースファイルをテスト専用のディレクトリにコピーし、ファイルアタッチ機能を利用して動的にアタッチする事で、テストの度に毎回データベースを初期化する手間がなくなります。
操作方法
では操作方法を説明します。
まずソリューションエクスプローラのSolution Itemsフォルダから.testconfigファイルを開き、「配置」を選択します。次に「ファイルの追加」からテストで使用したい.mdfファイルを指定します。これでテスト専用ディレクトリにデータベースファイルがコピーされるようになります。テスト実行時にはコピーされたデータベースファイルはSQL Serverによって自動的にアタッチされます。
また、SQL Server 2005 Express Editionを利用している場合には、ファイルアタッチ機能に加え、ユーザーインスタンス機能が利用できるため、テスト終了時に自動的にデタッチされるようにすることもできます。この設定を行うためには、以下のように設定ファイル内のSQL Serverへの接続文字列を設定している部分で“Data Source”にSQL Server 2005 Express Editionのデータベースを指定し、“User Instance”をtrueに設定します。
<connectionStrings>
<add name="Sample"
providerName="System.Data.SqlClient"
connectionString="Data
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Sample.mdf;
Integrated Security=True;User Instance=True" />
</connectionStrings>
“User Instance”がfalseになっている場合やSQL Server 2005 Express Edition以外のエディションのSQL Serverを利用している場合にはデタッチがなされず、アタッチされた同名のDBファイルがどんどん増えていくので注意してください。
コードカバレッジで網羅率を見よう
コードカバレッジとは単体テストの網羅率を表示する機能で、結果は表とコードの塗り分けの2種類で参照することができます。コードカバレッジを見るためには単体テストを実行する前にいくつかの設定をしておく必要があります。まずはソリューションエクスプローラから.testrunconfigファイルを開きコードカバレッジを選択します。ソリューションで生成されるdllファイルが表示されるのでテスト対象(単体テストではなく)のdllにチェックを付け、[OK]を押下します。
次にVSTSのメニューバーから[ツール]-[オプション]を選択します。オプションウィンドウが立ち上がってきますので、「テストツール」ノードを展開し、「テストの実行」を選択します。コードカバレッジの設定が表示されるので「既定で、ソースコードの色分けを有効にする」にチェックをつけます。これで事前の設定は完了です。後はテスト実行後にテスト結果の表示画面から「コードカバレッジ結果の表示」を選択すればコードカバレッジを参照することができます。
なお、VSTSのコードカバレッジの方法は「C0」で行われています。カバレッジについての3つの方法を以下の表1にまとめました。
| C0 | 命令網羅率(ステートメントカバレッジ) | コード内の命令を少なくとも1回は実行 |
| C1 | 分岐網羅率(ブランチカバレッジ) | コード内の分岐を少なくとも1回は実行 |
| C2 | 条件網羅率(コンディションカバレッジ) | コード内の条件を少なくとも1回は実行 |
また、命令網羅の計測を行う際、VSTSのコードカバレッジ機能では、C#やVB.NETのソースコードの行を計測しているのではなく、中間コードにコンパイルされたMSILコードを計測しているため、ソースコード上は実行されているように見えても完全には網羅されないといったケースもあります。
この記事は参考になりましたか?
- Visual Studio 2005 Team Edition for Software Developersを使ってみよう連載記事一覧
-
- VSTDのパフォーマンスプロファイラで、アプリケーションのボトルネックを検出しよう
- コード分析による品質向上のキモ - VSTDにおけるFxCopツール活用 -
- システム品質向上のワザ -VSTDの単体テスト機能を極める-
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


Integrated Security=True;User Instance=True" />
</connectionStrings>
