Если Assert.Equals
использует компаратор по умолчанию (понятия не имеет), этот тест не пройден, поскольку List<T>
по умолчанию использует ссылочное равенство.
Если оба списка имеют одинаковый порядок, вы можете использовать метод расширения linq Enumerable.SequenceEqual
для проверки на поэлементное равенство.
Если вы хотите считать списки с одинаковыми элементами равными даже при разном порядке, вы можете использовать a.Intersect(b).Count()==a.Unit(b).Count()
, поскольку в Linq нет метода расширения SetEqual
.
И даже если он сравнивается по значению, почему вы ожидаете, что список, содержащий 3 элемента, будет равен списку, содержащему 6 элементов?
Как примечание: ваши соглашения об именах отличаются от соглашений .net. Обычно имена локальных переменных начинаются со строчных букв.
И я нахожу строку target.HazardSymbols = EdgeCaseSymbolCodes;
очень странной. Означает ли это, что у вас есть свойство типа List<T>
с открытым сеттером? Я бы предпочел избегать тех, которые могут привести к тому, что разные объекты будут использовать один и тот же экземпляр List, что может иметь странные последствия, если они изменят свой список.