2009-11-24 5 views
11

NUnit의 Assert 메서드 중 일부는 ICollection이 아닌 overloaded이며 ICollection<T>이 아니므로 사용할 수 없습니다.ICollection에서 NUnit 메서드를 사용하는 이유 또는 방법

어딘가에 있습니까? 젠장, 내가 바보 같은 짓하고있어?

나는 특수한 방법이 아닌 Assert.AreEqual을 사용하는 것으로 돌아가므로 내 테스트가 추악합니다.

어떤 조언이 필요합니까?

편집 : 응답

감사합니다. NUnit의 That 메서드는 재미있을 것 같아서 나중에 살펴볼 것입니다.

정확하게 표시해주세요. 단, NUnit Collection Asserts은 우수합니다. 나는 최근 몇 가지 새로운 테스트에서 그들을 사용하고 그들이 작동하도록 훌륭한 것으로 나타났습니다.

+0

내가 언급해야 할 것은, 수업 시간에 나는 시험하고있다. 메소드 반환 유형을 IList 대신 List 대신이 문제를 해결하지만 목록 을 공개 할 예정입니다. 이유는 이미 너무 자세하게 논의했기 때문입니다. 이미. – Finglas

+0

컬렉션에 존재하지 않는 것이 없다면 컬렉션을 목록으로 바꾸는 데 linq를 사용하면 아무런 해가 없습니다. 예를 들어 ForEach 메서드가 작동한다고 주장하면 잘못된 형식이됩니다. –

답변

8

ICollectionICollection<T>은 다른 계약입니다. 하나는 다른 계약을 상속하지 않습니다. http://msdn.microsoft.com/en-us/library/y2fx0ty0.aspx

당신이 그것을에 ToList()를 호출하고뿐만 아니라 제네릭이 아닌 ICollection을 구현하기 위해 일어나는 List<T>을 얻을 수있는 일반적인 모음이있는 경우

http://msdn.microsoft.com/en-us/library/system.collections.icollection_members.aspx

. 그런 다음 NUnit Assert 메서드에서 해당 List를 사용합니다.

+0

스매싱. Linq는 그날을 저장했습니다 (또 다시). 건배,이 생각하지 않았다. – Finglas

+1

Linq가 그날을 저장하지 않았을 수도 있습니다. 나중에 장미 빛으로 회상하게되면 나중에 실망하게 될 것입니다. –

+0

글쎄 그건 나에게 ToList()를 주었다. 나는 행복하다. – Finglas

7

는 CollectionAsserts의 세트가있다, 또는 당신은 AssertHelper에서 테스트를 상속 컬렉션에 적용되는 제약 당신에게 구문을 제공해야 문서에

Expect(actual, Is.EquivalentTo(expected)); 

같은 살펴보면를 구문을 사용할 수 있습니다. 여기

는 (이 버전 2.5.2입니다) link

N.B. 이것이 당신이 찾고있는 경우 ... Assert.That 단지 속기는

+0

당신의 대답은 받아 들여지는 것보다 낫습니다. 얼마나 유감스러운가요? 3 분만이 수용소에 늦었습니다. –

9

모르겠어요 기대하지만, 대신에 사용하는 일반적인 컬렉션을 위해 :

Assert.Contains(member, list); 

을 내가 사용

Assert.That(list.Contains(member)); 

거의 읽을 수있는 것으로 나타났습니다.

관련 문제