为什么它不平等?它与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),这是可重现的。
答案 0 :(得分:0)
我报告了这个错误,但它因未解决而关闭:https://github.com/nunit/nunit/issues/1209
所以你可以使用NUnit 3.x或者接受它在NUnit 2.6.x中被破解。
答案 1 :(得分:-1)
a
和b
类型Int32[2][]
并不意味着它们相等,如果引用,则Equals
返回true你的阵列是相同的,但它们不是。您想要的是使用a.SequenceEquals(b)
来确定其内容是否相同。