周辺ファイルを利用しよう
「テスト用のデータベースファイルを使用したい!」「データベースファイルをテストの度に初期化するのが面倒!」「テスト用の構成設定を用意したい!」と思うことは多々あると思います。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コードを計測しているため、ソースコード上は実行されているように見えても完全には網羅されないといったケースもあります。


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