xUnit.NETは.NET 2.0以上で動作するテストツールで、MicrosoftのBrad Wilson氏とJames Newkirk氏が中心となって開発を進めています。xUnit.NETは拡張性の向上、カスタム属性の減少、メソッドごとのインスタンス生成を特徴としており、Moq、Ninject、Oxite、KiGGなどのOSSにも採用されています。以下、xUnit.NETの導入方法、テストコードを紹介します。

xUnit.NET の入手と環境設定

xUnit.NET はCodePlexから入手できます。執筆時点での最新バージョンは1.6です。「xunit-1.6.zip」をダウンロードして適当なフォルダ(本稿ではC:\Sample\xunit)に展開します。これには以下のようなファイルが含まれています。

xUnit.NETのWebサイト

インストールウィンドウ(xunit.installer.exe)

  • テストフレームワーク(xunit.dll、xunit.extensions.dll)
  • テストランナー(xunit.console.exe、xunit.gui.exe)
  • インストーラー(xunit.installer.exe)
  • 外部連携用アセンブリ(xunit.runner.msbuild.dll、xunit.runner.tdNET .dll)
  • 整形用スタイルシート(HTML.xslt、NUnitXml.xslt)

必須ではありませんが、インストーラーを起動して初期設定をしておくとよいでしょう。このインストーラーではTestDriven.NETとの連携、ASP.NET MVCのテンプレート追加、GUIテストランナーと拡張子(*.xunit)の関連付けを行うことができます。なお、ReSharperとの連携はxUnit.NET Contribプロジェクトをご覧ください。

テストの準備

それでは、テストプロジェクトを作成しましょう。本稿では、Visual Studio 2010と.NET 4.0を使用します。まず、以下の2つのプロジェクトを内包するソリューションを作成します。

  • 実装プロジェクト(SampleLib.dll)
  • テストプロジェクト(SampleLibTest.dll)

プロジェクトの構成と設定

出力の種類は共に「クラスライブラリ」です。テストプロジェクトでは「xUnit.dll」「xUnit.extension.dll」「SampleLib.dll」に参照設定をします。テストプロジェクトをスタートアッププロジェクトに設定します。

次に、プロジェクトのプロパティでデバッグ実行時にテストランナーが起動するように設定します。バージョン1.6の場合、次の4種類が用意されていますので、テストプロジェクトに応じたテストランナーを選択します。

  • xunit.gui.exe(.NET 3.5以前で64ビット)
  • xunit.gui.x86.exe(.NET 3.5以前で32ビット)
  • xunit.gui.clr4.exe(.NET 4.0で64ビット)
  • xunit.gui.clr4.x86.exe(.NET 4.0で32ビット)

開始オプションのコマンドライン引数にはアセンブリ(*.dll)を設定します。

テストプロジェクト(*.xunit)の作成

現在の設定ではテストランナーを終了する度に確認ダイアログが表示されます。そのため、xUnit.NET のプロジェクトファイル(*.xunit)を作成し、そのパスをコマンドライン引数に設定することも可能です。プロジェクトファイルはテストランナーのProjectメニューから作成できます。

プロジェクトのプロパティ設定(xUnitプロジェクトを呼び出す場合)

インストーラーで関連付けを行っていれば、プロジェクトファイル(*.xunit)をダブルクリックしてテストランナーを起動できます。この場合、テストランナーを起動したままコードの編集を行えます。テスト対象のアセンブリを更新した場合も自動的にリロードされます(バーの色が変わります)。Visual Studioでデバッグはできませんが、状況に応じて使いわけるとよいでしょう。