NUnit 3.0 が出ているので、NUnit 3.0 TestAdapter と合わせて動作確認してみました。
いまは NuGet から導入できるので、
- テストする クラスライブラリ のプロジェクトを作成。
- NUnit を利用してテストを行うプロジェクトを作成(プロジェクトの種類は クラスライブラリ)し、NuGet からNUnit と NUnitTestAdapter をインストール。
- テストを行うプロジェクトにテストするプロジェクトへの参照を追加する。
という手順でできるはずだったのですが、NUnit 3.0 TestAdapter が NuGet で公開状態になっていない(2016/01/09現在)ため、NUnit 3.0 対応の NUnitTestAdapter は Visual Studio のツールメニュー → 拡張機能と更新プログラム(Extension Manager) からの導入になりました。
で、動作確認したところ、テスト時のカレントディレクトリがこれまでとは異なっているのがわかりました😟。
カレントディレクトリ
NUnitTestAdapter Ver.2.6: テストプロジェクトの bin\Debug
NUnit 3.0 TestAdapter: C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW
MS Test: テストプロジェクトの bin\Debug
これは、テストの際に初期状態や期待する完了状態をファイルから読み込みたい場合に困ります。これはバグ報告かなぁと思って、GitHub の Issues を見てみると、すでに報告が上がっていて、状態も「バグ」「プライオリティ: 高」になっていました。
とはいえ、対応版が出るまで待てないので、ちょっと調べてみたところ、NUnit.Framework.TestContext.CurrentContext.TestDirectory からテストプロジェクトの bin\Debug ディレクトリを取得することができるので、これを使うことで、とりあえずの回避策をとることができます(既存のプロジェクトだとコード変更が必要になりますが)。