这个测试怎么会失败呢?

[TestMethod]
public void Get_Code()
{
    var expected = new List<int>();
    expected.AddRange(new [] { 100, 400, 200, 900, 2300, 1900 });

    var actual = new List<int>();
    actual.AddRange(new [] { 100, 400, 200, 900, 2300, 1900 });

    Assert.AreEqual(expected, actual);
    // Assert.AreSame(expected, actual)       fails
    // Assert.IsTrue(expected.Equals(actual)) fails
}

当前回答

要对集合进行断言,你应该使用CollectionAssert:

CollectionAssert.AreEqual(expected, actual);

List<T>不重写Equals,所以if Assert. T。AreEqual只调用Equals,它最终会使用引用相等。

其他回答

List<AdminUser> adminDetailsExpected = new List<AdminUser>()
{
new AdminUser  {firstName = "test1" , lastName = "test1" , userId = 
"001test1"  },
new AdminUser {firstName = "test2" , lastName = "test2" , userId = 
"002test2"   }
};

/ /行为

List<AdminUser> adminDetailsActual = RetrieveAdmin(); // your retrieve logic goes here

/ /维护

Assert.AreEqual(adminDetailsExpected.Count, adminDetailsActual.Count);  //Test succeeds if the count matches else fails. This count can be used as a work around to test

如果你想检查每个包含相同的值集合,那么你应该使用:

CollectionAssert.AreEquivalent(expected, actual);

编辑:

“两个集合是等价的,如果它们有相同数量的相同元素,但顺序不同。元素相等是指它们的值相等,而不是指它们指向同一个对象。”——https://msdn.microsoft.com/en-us/library/ms243779.aspx

流畅断言对数组进行深度比较。

我想这会有帮助

Assert.IsTrue(expected.SequenceEqual(actual));

要对集合进行断言,你应该使用CollectionAssert:

CollectionAssert.AreEqual(expected, actual);

List<T>不重写Equals,所以if Assert. T。AreEqual只调用Equals,它最终会使用引用相等。