ユニットテストツールもろもろ

.NETでは、大きくわけて、NUnitMbUnit、MSTest(Visual Studioユニットテスト)、xUnit.netという4つのユニットテストツールが存在します。それぞれ、機能やシンタックスに特徴があるわけですが、それをまとめたページがCodePlexにあります

xUnit.net - Unit Testing for .NET

4つのユニットテストツールには、少しずつ違いがあります。例えば、4つの中で一番後発のxUnit.netは、

  • テストクラスの宣言・・・[TestFixture]属性ではなく、Publicなメソッドを自動的に対象
  • テストの準備と破棄・・・[SetUp]属性と[TearDown]属性ではなく、コンストラクタとデストラクタを使う
  • アサート文・・・「AreEqual〜」ではなく「Equal〜」のようにAre〜なしのシンタックスを使う

というような特徴があります。全体としては、他のツールの機能の補完、取り込みが進んでいて

という流れがあるような気がしました。

JUnitなどの他言語の状況は把握してないのですが、.NETでは、このように複数ユニットテストツールがあるために、全てのテストを走らせられる「Gallio」がMbUnitから独立して登場しようとしてます。Gallioのバージョンは分かりにくい(最新バージョンがGallio Alpha 3 Update 3)ので、安定版がいつになるのはかは不明ですが、レポーティング機能や、CC.NET/NANT/MSBuild等との統合もできるので気になる存在です。

あとは、PexというMicrosoft Researchのホワイトボックステストを自動生成する仕組みも注目です。

  • 追記(2008-10-18)
    • GallioMbUnitのバージョン3の正式版が出ました(BetaとかRCは無し)。ラムダ式でテストできるAssertEx.That〜や、テストが失敗しても後続のテストも行うMultiple Assertsなど新機能が多数あるようです。なお、アサーションメソッドと属性が新しくなってるので、MbUnit2から移行する場合、コードによっては変更が必要かもしれません。
    • Announcing Gallio and MbUnit v3.0.4