索引1的值不同 - 对于相等的嵌套数组

时间:2016-01-22 14:41:49

标签: c# unit-testing nunit

为什么它不平等?它与CollectionAssert相同。

        var a = new[] { new[] { 1, 2 }, new[] { 3, 4 } };
        var b = new[] { new[] { 1, 2 }, new[] { 3, 4 } };
        // if you comment these two lines the test passes
        a[0] = a[1];
        b[0] = b[1];
        Assert.That(a, Is.EqualTo(b));

给出:

Expected and actual are both <System.Int32[2][]>
Values differ at index [1]
  Expected and actual are both <System.Int32[2]>

我正在使用nunit 2.6.4.14350并在VS .NET 4.5项目中从ReSharper测试运行器运行。

对于独立的NUnit测试运行器(2.6.4),这是可重现的。

2 个答案:

答案 0 :(得分:0)

我报告了这个错误,但它因未解决而关闭:https://github.com/nunit/nunit/issues/1209

所以你可以使用NUnit 3.x或者接受它在NUnit 2.6.x中被破解。

答案 1 :(得分:-1)

ab类型Int32[2][]并不意味着它们相等,如果引用,则Equals返回true你的阵列是相同的,但它们不是。您想要的是使用a.SequenceEquals(b)来确定其内容是否相同。