Похоже, что CollectionAssert
нельзя использовать с дженериками. Это очень расстраивает; код, который я хочу протестировать, использует дженерики. Что мне делать? Написать шаблон для преобразования между ними? Вручную проверить эквивалентность коллекции?
Это не удается:
ICollection<IDictionary<string, string>> expected = // ...
IEnumerable<IDictionary<string, string>> actual = // ...
// error 1 and 2 here
CollectionAssert.AreEqual(expected.GetEnumerator().ToList(), actual.ToList());
// error 3 here
Assert.IsTrue(expected.GetEnumerator().SequenceEquals(actual));
Ошибки компилятора:
Ошибка 1:
«System.Collections.Generic.IEnumerator>» не содержит определения для «ToList», и не удалось найти метод расширения «ToList», принимающий первый аргумент типа «System.Collections.Generic.IEnumerator>».
Ошибка 2
«System.Collections.Generic.IEnumerator>» не содержит определения для «ToList», и не удалось найти метод расширения «ToList», принимающий первый аргумент типа «System.Collections.Generic.IEnumerator>».
Ошибка 3
«System.Collections.Generic.IEnumerator>» не содержит определения для «SequenceEquals», и не удалось найти метод расширения «SequenceEquals», принимающий первый аргумент типа «System.Collections.Generic.IEnumerator>».
Что я делаю неправильно? Я неправильно использую расширения?
Обновление: Хорошо, это выглядит немного лучше, но по-прежнему не работает:
IEnumerable<IDictionary<string, string>> expected = // ...
IEnumerable<IDictionary<string, string>> actual = // ...
CollectionAssert.AreEquivalent(expected.ToList(), actual.ToList()); // fails
CollectionAssert.IsSubsetOf(expected.ToList(), actual.ToList()); // fails
Я не хочу сравнивать списки; Меня волнует только установленное равенство членства. Порядок членов не имеет значения. Как я могу обойти это?
CollectionAssert.AreEquivalent
. Какое сообщение об ошибке вы получаете при тестировании? (возможно, ваши ожидаемые и фактические не эквивалентны!) - person bacar   schedule 18.06.2012CollectionAssert.AreEqual
работало с большим количеством типов? - person Colonel Panic   schedule 15.05.2015