작은 도우미 메서드 인 contentsToArrayList를 작성했습니다. ICollection을 구현 한 객체를 전달하면 원래 객체와 동일한 요소가 포함 된 ArrayList를 반환합니다. 다른 객체를 전달하면 객체 자체가 포함 된 ArrayList가 반환됩니다.두 개의 ArrayList (C#) 인스턴스가 값의 동일성을 테스트 할 수 있습니까?
이제 메소드를 테스트하고 싶습니다. 내 단위 테스트는 (약식 조금, 좀 더 테스트 케이스를 포함)과 같습니다
//Arrange
int a = 1;
ArrayList aAsArrayList = new ArrayList();
aAsArrayList.Add(a);
List<int> f = new List<int>() { 4, 5, 6 };
ArrayList fAsArrayList = new ArrayList(f);
//Act
ArrayList aReturned = contentsToArrayList(a);
ArrayList fReturned = contentsToArrayList(f);
지금 나는 나의 주장 작성하는 방법을 모르겠습니다. 기본적으로 aAsArrayList에 aReturned와 동일한 객체가 포함되어 있는지 확인하려고합니다. 그러나 ArrayList는 참조 유형이므로 값의 동일성이 정의되어 있는지 확신 할 수 없습니다. aReturned == aAsArrayList와 같은 것을 사용하여 arraylists를 쉽게 비교할 수 있습니까? 아니면 arraylist의 각 멤버를 비교해야합니까?
당신은 nunit을 사용하고 있습니까? 그렇다면 CollectionAssert를 사용하십시오 http://www.nunit.org/index.php?p=collectionAssert&r=2.4 – doctorlove
@doctorlove 아니요, 저는 Visual Studio에서 기본 제공 테스트 프레임 워크를 사용하고 있습니다. 하지만 nunit 솔루션에 감사드립니다. –
가능한 경우 ArrayList를 피하십시오. 그냥 ... – nawfal