前回の投稿で、Visual Studio 2008 からは、Professional Edition 以上で単体テスト機能(以下、MSTest)が使えることを知った次第。
MSTest は、Visual Studio に統合されている点を筆頭に、なかなかに使い勝手が良さそうではある。
テストコードの雛形を、テスト対象のコードから右クリックのメニューで生成できてしまうのもなかなかよい。
ケースバイケースなのは仕方ないが、それにしても、けっこうインテリジェンスなコードを自動生成するので、テストコードのスタートラインとしてはじゅうぶんに思える。
TestDriven.NET ではこんなことはできたっけ?
しかしながら、より廉価な Standard Edition や Express Edition には搭載されていないこともあって、これらの廉価版 Visual Studio を使用しているチームと協業することを想定すると、これまで採用してきた NUnit からの乗り換えにはちょっと躊躇していた。
そんなときに、MSTest と NUnit とでテストコードを共有できるらしい、との話をいろいろ教えてもらった(下記参照)。
ナオキにASP.NET(仮)
Visual Studio 2008 Professional Edition では単体テストが利用できますよー
また、NUnit の ver.2.4.x 系列ではなく ver.2.2.x 系列最新版(2.2.10)のテストランナーであれば、MSTest 用のテストコードを実行できるよ、との話も。
CodeZine
ここが違う! Visual Studio 2008
さて、NUnit ver.2.2.10のテストランナーであれば、MSTest 用のテストコードを実行できる件。
これはこれでよい話なのだが、先に書いたような他チームとの協業で Visual Studio Standard Edition のみインストールされている環境にこのコードを持っていった場合、やっぱり動作しないのではないだろうか?
というのも、MSTest 用に書いたテストコード、及びビルド後のアセンブリは、結局、Microsoft.VisualStudio.QualityTools.UnitTestFramework アセンブリを必要とし、このアセンブリは Standard Edition には付属しておらず、かつ、再配布不可ではないのだろうか?
まぁ、いくつかのアセンブリを自作してやれば、ソースコードレベルでの互換性は維持できるので、それで充分とは思う。
実際、ソースコードレベルでの MSTest と NUnit とでの C# コード共有については、条件コンパイルを使う技法があることも教えてもらった。
ただ、とにかく、さすがの NUnit 2.2.10 といえども、上記のような他チームとの協業の場面では、そんなにすんなりとは使えないのではないか、ちょっと工夫が要るのではないか、ということだ。
とはいえ、この件は実際に試したり、ちゃんと調べたりしたワケではないので、今は憶測のレベル。
折を見てもうちょっと調査する必要がありそうだ。
さてさて、NUnit 2.2.10 のテストランナーが使えそう/使えなさそうの件はとりあえずさておき。
先に触れたが、
条件コンパイルを使うことでも、MSTest と NUnit のテストコード共有ができるとの情報も教えてもらったので、それならば大丈夫かと、いよいよ実際に MSTest を試用してみた。
で、試用してみた結果だが、MSTest と NUnit とでのテストコードの共有は、やっぱり、ちょっと難しそうだ。
詳しい顛末はまたつづきで。