NUnitとMbUnitの密かな違い
.NETで単体テストを行う場合、無償のものでは
NUnitを使うことが多いかと思います。
.NET用の無償テスティングフレームワークにはNUnitの他に
MbUnitというものがあり、Seasar.NETではこのMbUnitを
使っています。
つい最近、両者の間の地味な挙動の違いに
今更ながら気づいたのでメモ代わりに
書いておきます。
その違いとは、
staticな変数がもつ値がMbUnitでは再度コンパイルされるまで保持される!!
- 検証コード
NUnitで上記テストを動かした場合
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;
}
}
実行1回目
実行2回目
MbUnitで上記テストを動かした場合
実行1回目
実行2回目
普通にnewしてメソッド呼んで〜、なテストであれば
問題はないのですが、staticな使い方をするクラス、メソッドの
テストコードを書く場合はご注意下さい〜!
※使用したバージョン
NUnit:2.4.7
MbUnit:2.3.105