2009-03-19 9 views
12

В структуре MSTest есть CollectionAssert, который принимает ICollections. Мой метод возвращает IList. По-видимому, список не является сборником.Unit-testing IList with CollectionAssert

Есть ли способы сделать мой IList ICollection?

+2

Соедините проблему для этого. Обычный ответ Microsoft, tsss. https://connect.microsoft.com/VisualStudio/feedback/details/477870/collectionassert-cannot-be-used-with-hashset-t-and-possible-other-collections# – Rudi

ответ

9

Вы могли бы назвать) метод ToArray (расширение на нем - массив реализует ICollection

Edit: Кроме того, в то время как List<T> реализует ICollection, IList<T> реализует только ICollection<T>, который не реализует ICollection, так что если вы знаете, этот пункт в тест является List<T>, вы должны быть в состоянии бросить его ...

+0

Я думаю, что IEnumerable для параметров был бы лучший выбор. У NUnit есть это право. – Gishu

1

вы можете отправить в список

List<string> actual = new List<string>(){"1","2","3"}; 
    List<string> expected = new List<string>(){"1","2","**EditCaseFalse**"}; 
    CollectionAssert.AreEqual(actual,expected) 

Я получаю обратно Failed (третий элемент не .)

+3

и как именно это связано с вопросом? –

+0

Я отправляю в двух списках (IList), которые сравниваются в CollectionAssert, это ваша проблема ... – salgo60

+0

Прошу прощения, я недостаточно читал в вашем ответе. Пожалуйста, см. Ответ @ Lee о том, почему это работает, но не решение моей проблемы. –