Chaining Assertion で MSTest をイケてるしヤバい感じに

.NET で使える単体テストフレームワークである MSTest 、Visual Studio に標準で付属しているので導入が簡単で良いんだけれど、折角 C# なのに記法がえらく古臭くてちょっと残念。

その残念な MSTest の記法をイケてるしヤバい感じにしてくれるのがこちら。

MSTest だけでなく、 NUnit とか他のフレームワークにも対応してるらしい。サンプルコードを見ればだいたい感じはつかめるかと。

インストール

このページにあるように、 VS2010 なら NuGet でインストールできる。 GUI がいいならプロジェクト右クリック -> Manage NuGet Packages からでも OK 。

インストールすると ChainingAssertion.MSTest.cs というソースファイルが対象プロジェクトに勝手に追加される。落としてきた packages の中を見るとわかるけど、 Chaining Assertion の実体はこのソースファイル一つらしい。これはMicrosoft.VisualStudio.TestTools.UnitTesting 名前空間で拡張メソッドとして作成されてるので、既存のテストクラス内からでも何もせずにそのまま使える。

obj.IsNull() なんて書けるのは拡張メソッドならではよね。 null でもぬるぽ起きない。なんとも変態的でよい。

Java とかだと英文っぽく書くために Hamcrest と static import とか使ってちょっと涙ぐましい感じになるしな。オブジェクトに任意にメソッド生やせるのは便利だ。

最近の assertThat 系もそうだけど、 expected -> actual より actual -> expected の順に書くほうが思考の順番としては確かに自然な気がする。