NUnitとMbUnitの密かな違い

.NETで単体テストを行う場合、無償のものでは
NUnitを使うことが多いかと思います。


.NET用の無償テスティングフレームワークにはNUnitの他に
MbUnitというものがあり、Seasar.NETではこのMbUnit
使っています。
つい最近、両者の間の地味な挙動の違いに
今更ながら気づいたのでメモ代わりに
書いておきます。


その違いとは、
staticな変数がもつ値がMbUnitでは再度コンパイルされるまで保持される!!

  • 検証コード


class StaticClass
{
public static bool IsSet = false;
}

[TestFixture]
public class StaticTest
{
[Test]
public void TestStaticVariable()
{
Console.WriteLine(StaticClass.IsSet);
Assert.IsFalse(StaticClass.IsSet);
StaticClass.IsSet = true;
}
}

NUnitで上記テストを動かした場合
実行1回目

実行2回目

MbUnitで上記テストを動かした場合
実行1回目

実行2回目



普通にnewしてメソッド呼んで〜、なテストであれば
問題はないのですが、staticな使い方をするクラス、メソッドの
テストコードを書く場合はご注意下さい〜!

※使用したバージョン
NUnit:2.4.7
MbUnit:2.3.105