Почему или как использовать методы NUnit с ICollection <T>

Некоторые из методов NUnit перегружены, чтобы использовать ICollection, но не ICollection<T>, и поэтому вы не можете их использовать.

В любом случае, вокруг? Черт, я делаю что-то глупое?

Мне нужно вернуться к использованию Assert.AreEqual, а не к специализированным методам и сделать мои тесты уродливыми.

Любые советы?

Edit:

Спасибо за ответы. Метод That NUnit кажется интересным, поэтому я рассмотрю его позже.

Марк правильно упомянул об этом, но NUnit Collection Asserts отлично. Я недавно использовал их в некоторых новых тестах и ​​нашел их превосходными для работы.

Ответ 1

ICollection и ICollection<T> - разные контракты - один не наследует другого.

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

Если у вас есть общая коллекция, вы можете вызвать ToList() на ней и получить List<T>, который также реализует не-общий ICollection. Затем используйте этот список в методе NUnit Assert.

Ответ 2

Я не знаю, это то, что вы ищете, но для общих коллекций, а не для использования:

Assert.Contains(member, list);

Я использую:

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

который я считаю почти читаемым.

Ответ 3

Существует набор CollectionAsserts, или вы можете наследовать свой тест из AssertHelper и использовать синтаксис, например

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

Взгляд на документацию должен дать вам синтаксис ограничений, которые применяются к коллекциям.

Здесь ссылка (это версия 2.5.2)

N.B. Ожидание - это просто сокращение Assert.That...