NUnit:测试两个集合是否相同,只报告差异

时间:2016-12-21 23:33:17

标签: c# nunit

我正在使用NUnit断言以下内容:

    [Test]
    public void Test()
    {
        CollectionAssert.AreEquivalent(new[] {"a", "b", "c"}, new[] {"b", "a", "d"});
    }

这会产生以下错误消息:

  

预期:相当于< “a”,“b”,“c”>

     

但是:< “b”,“a”,“d”>

这对于这个微不足道的例子是可以的。但是,当有更多元素和/或更长时间,更难区分字符串时,错误消息无助于查看正在发生的事情。

我期待(也许还有)像:

  

缺少:“c”

     

额外:“d”

有没有办法使用NUnit实现这一目标? (我当然可以去自己编程,但这不是问题。)

1 个答案:

答案 0 :(得分:1)

我认为这会得到你想要的结果:

var a = new[] { "a", "b", "c" };
var b = new[] { "b", "a", "d" };
CollectionAssert.AreEquivalent( a, b,  "a is Missing " + string.Join( ", ", b.Except( a ) ) + " and b is missing " +
   string.Join( ", ", a.Except( b ) ));