1

何をテストし、何をテストしないかを把握しようとしています。

この非常に単純なユーティリティ クラスを考えると、次のようになります。

public static class Enforce
{
    public static void ArgumentNotNull<T>(T argument, string name)
    {
        if (name == null)
            throw new ArgumentNullException("name");

        if (argument == null)
            throw new ArgumentNullException(name);
    }
}

次のテストで十分だと思いますか? それとも、有効な引数が実際にはスローしないという逆の条件もテストする必要がありますか?

[Fact]
    public void ArgumentNotNull_ShouldThrow_WhenNameIsNull()
    {
        string arg = "arg";
        Action a = () => Enforce.ArgumentNotNull(arg, null);

        a.ShouldThrow<ArgumentNullException>();
    }

    [Fact]
    public void ArgumentNotNull_ShouldThrow_WhenArgumentIsNull()
    {
        string arg = null;
        Action a = () => Enforce.ArgumentNotNull(arg, "arg");

        a.ShouldThrow<ArgumentNullException>();
    }

一般的に逆条件をテストする必要がありますか? それとも、この場合、想定しても安全ですか?

注意点として、私は xUnit と FluentAssertions を使用しています。

4

1 に答える 1