Лучший отвечающий
unit Testing. Ошибка

Вопрос
-
class TestProblemClass { private List<int> high = new List<int>(5); public TestProblemClass() { high = new List<int> { 2, 4, 6, 8, 10 }; } public List<int> High() { return high; } }
Есть класс. Создаю тест.
Тест не проходит. Ошибка Assert.AreEqual failed. Expected:<System.Collections.Generic.List`1[System.Int32]>. Actual:<System.Collections.Generic.List`1[System.Int32]>.[TestMethod()] public void HightHTest() { TestProblemClass target = new TestProblemClass(); // TODO: Initialize to an appropriate value List<int> expected = new List<int> { 2, 4, 6, 8, 10 }; ; // TODO: Initialize to an appropriate value List<int> actual; actual = target.High(); Assert.AreEqual(expected, actual); //Assert.Inconclusive("Verify the correctness of this test method."); }
- Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:40 MSDN Forums consolidation (От:Visual C#)
23 июля 2010 г. 17:41
Ответы
-
Так и должно быть. List - ссылочный тип. Реализация метода Object.Equals() по умолчанию для ссылочных типов сравнивает значения ссылок на эти объекты, которые указывают на разные области памяти. Чтобы сравнить значения в списке нужно организовать цикл и проверить
Assert.AreEqual(expected[i], actual[i])
- Помечено в качестве ответа Гриффон 23 июля 2010 г. 20:57
23 июля 2010 г. 19:53
Все ответы
-
Так и должно быть. List - ссылочный тип. Реализация метода Object.Equals() по умолчанию для ссылочных типов сравнивает значения ссылок на эти объекты, которые указывают на разные области памяти. Чтобы сравнить значения в списке нужно организовать цикл и проверить
Assert.AreEqual(expected[i], actual[i])
- Помечено в качестве ответа Гриффон 23 июля 2010 г. 20:57
23 июля 2010 г. 19:53 -
Так и должно быть. List - ссылочный тип. Реализация метода Object.Equals() по умолчанию для ссылочных типов сравнивает значения ссылок на эти объекты, которые указывают на разные области памяти. Чтобы сравнить значения в списке нужно организовать цикл и проверить
Assert.AreEqual(expected[i], actual[i])
Спасибо. Я понимал, что так и должно быть... но, вот что не так не понимал. Теперь всё ясно. Написал таки всё замечательно работает. Еще раз спасибо, только разбираюсь с тестами и был затык именно с любыми ссылочными типами.[TestMethod()] public void HightHTest() { TestProblemClass target = new TestProblemClass(); // TODO: Initialize to an appropriate value List<int> expected = new List<int> { 2, 4, 6, 8, 10 }; ; // TODO: Initialize to an appropriate value List<int> actual; actual = target.High(); for (int i = 0; i < expected.Count; i++) { Assert.AreEqual(expected[i], actual[i]); } //Assert.Inconclusive("Verify the correctness of this test method."); }
23 июля 2010 г. 21:01