かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

ChainingAssertion使ってみた

id:neueccさんのライブラリに依存している今日この頃です。ChainingAssertionにも手を出してみました。このライブラリはnugetでさくっと入れれる所もいいのですが、なんとdllではなくソースコード形式で提供されているんですよね!!nugetで登録したらChainingAssertionという名前のソースファイルがぽこっと追加されます。なので、このコードを見ながら拡張したいな〜って思ったところは、id:neuecc先生のコードをお手本にさくっと作ることができるということですよ。dllとかだとライブラリを追加するのが敷居高いというのでもコードでの再利用なら敷居低いところもあるかも??ないかも??

とまぁ、ChainingAssertionを使ってて感じた不満点はIsNullとIsNotNullにメッセージを渡せないところ。無いなら作ってしまえばいいじゃない?ということで下記のようにコードを書き換えて使ってます。お手軽修正できていい感じ。

// オリジナル
/// <summary>Assert.IsNull</summary>
public static void IsNull<T>(this T value)
{
    Assert.IsNull(value);
}

/// <summary>Assert.IsNotNull</summary>
public static void IsNotNull<T>(this T value)
{
    Assert.IsNotNull(value);
}

// 修正後
/// <summary>Assert.IsNull</summary>
public static void IsNull<T>(this T value, string message = "")
{
    Assert.IsNull(value, message);
}

/// <summary>Assert.IsNotNull</summary>
public static void IsNotNull<T>(this T value, string message = "")
{
    Assert.IsNotNull(value, message);
}

これでテストコード内に以下のように書けるって寸法です

var actual = default(string);
actual = foo.Hogehoge();
actual.IsNull("actual is null");

id:neueccさんの書くライブラリってよく考えて作られててコードもシンプルで可読性も高くて程よく変態的な部分もあると思います。リーディングにお勧めです。