How to compare Lists in Unit Testing
c#, mstest, unit-testing, visual-studio-2010
Solution
To make assertions about collections, you should use `CollectionAssert`:
CollectionAssert.AreEqual(expected, actual);
`List<T>` doesn't override `Equals`, so if `Assert.AreEqual` just calls `Equals`, it will end up using reference equality.
Problem
How can this test fail? ``` [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 } ```