NUnit += BDD
NUnitが2.4からBDD(Behavior Driven Development、振る舞い駆動開発)をサポートした。
NUnit自身は「Constraint-Based Assert Model」といってるけど。
NUnit 2.4.1 ダウンロード
BDDについては以下を参考
テスト駆動開発のテストは、テストか?
機能的には対して変わっていないけど、テストコードがより文法的になって意図を把握しやすくなった。
例えば「hogeManager」の「FindHoges」メソッドが返す値に対して検証を行う場合、以下のように記述した。
[Test] public void テスト() { Hoge[] resultSet = hogeManager.FindHoges(); Assert.IsNotNull(resultSet); Assert.AreEqual(resultSet.Length, 5); Assert.AreEqual(resultSet[0].Name, "Hoge"); }
意図的には、
これがこんな感じに変わる。
[Test] public void テスト() { Hoge[] resultSet = hogeManager.FindHoges(); Assert.That(resultSet, Is.Not.Null); Assert.That(resultSet, Has.Length(5)); Assert.That(resultSet[0].Name, Is.EqualTo("Hoge")); // or // Assert.That(resultSet[0], Has.Property("Name", "Hoge")); }
すべて「That」から始まるところがミソ。
「・・・」が「・・・」である、というような文法的に意味のあるコードに変わった。
テスト駆動開発を本当に活用しようと思うといわゆる「テスト」ではなく、「仕様」を記述するようになっていくので、はじめから、「テスト」ではなく「仕様」を書くことを意識させたところが従来とは違うところかな。
まぁ、自分の場合はもともと「仕様」を書いていたので、気持ち的にはたいして変わらないけど、「Assert.That」まではコードが揃って、見た目的に美しいので気に入った。
もう、古いバージョンには戻れない。