두 문자열 배열 목록을 비교하는 단위 테스트를 만들려고합니다. 두 목록 비교 <string[]> 개체 C# 단위 테스트
나는 똑같은List<string[]>
두 개체를 만드는 시도,하지만 난
CollectionAssert.AreEqual(expected, actual);
를 사용하는 경우, 테스트가 실패 : 나는 또한
Assert.IsTrue(expected.SequenceEqual(actual));
을 시도했습니다
[TestMethod]
public void TestList()
{
List<string[]> expected = new List<string[]> {
new string[] { "John", "Smith", "200" },
new string[] { "John", "Doe", "-100" }
};
List<string[]> actual = new List<string[]> {
new string[] { "John", "Smith", "200" },
new string[] { "John", "Doe", "-100" }
};
CollectionAssert.AreEqual(expected, actual);
}
하지만, 그뿐만 아니라 실패합니다.
두 개의 문자열 목록 또는 두 개의 문자열 배열을 비교할 때이 두 가지 방법이 모두 작동하지만 두 개의 문자열 배열 목록을 비교할 때 작동하지 않습니다.
배열 문자열 값 대신 개체 참조의 두 목록을 비교하기 때문에이 방법이 실패했다고 가정합니다.
두 개의 List<string[]>
개체를 비교하여 실제로 동일한지를 어떻게 알 수 있습니까?
이 시도 :.'expected.Zip을 (실제, (예, A) => e.SequenceEqual의 (a)) 모든 (당신이 그것을 호출 할 때 요소는, 당신은
IComparer
를 전달하여 해당 작업을 수행 할 수 있습니다 x => x)'. – Enigmativity호기심에서 ... 같은 요소를 가지고 있지만 순서가 다른 경우 목록이 "평등"하다고 생각하십니까? 또한 문자열 배열은 객체에 대한 끔찍한 대체물이라는 점에 유의할 필요가 없습니다. – David
@David이 특정 테스트에서는 엘리먼트가 같은 순서로 있어야하고 순서를 무시하는 솔루션이 필요하다는 것은 괜찮습니다. 그리고 객체가 일반적으로 문자열 배열보다 낫다는 것에 동의합니다. 이 코드는 더 큰 그림의 일부이며이 형식이어야합니다. –