2016-04-01 2 views
0

Я начинаю с MS Test и пытаюсь запустить следующий тест. Я вижу, что следующая часть дает мне провал, который довольно удивляет:MS Тест с ошибкой с коллекцией

[TestMethod] 
    public void EachRetailerPassedToBuilderIsReturnedInVmList() 
    { 
     List<string> mockRetailers = new List<string> { "Asda", "Tesco" }; 

     Assert.AreEqual(new List<string>{ "Asda", "Tesco"}, mockRetailers); 

    } 

Что я делаю неправильно?

Сообщение результатов: Assert.AreEqual не удалось. Ожидаемое :.

ответ

1

Проблема заключается в том, что List<T>.Equals не обеспечивает элементарную проверку данных. Он будет сравнивать только ссылки. Быстрое решение состояло в том, чтобы перебирать данные и Assert.Equals на каждый элемент. Помните, однако, чтобы проверить, совпадают ли размеры списка заранее.

Также можно использовать CollectionAssert.AreEqual, чтобы получить соответствующий результат.

How to compare Lists in Unit Testing

+0

http://stackoverflow.com/questions/11055632/how-to-compare-lists-in-unit-testing – Turo

+0

на самом деле это выглядит как это дубликат вопрос, который я не видел прежде, чем , CollectionAssert работал для меня. – Turo

+0

Ох. Я полностью забыл о CollectionAssert. – greenshade

Смежные вопросы