Почему существует Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Equals ()? - PullRequest
15 голосов
/ 28 января 2009

Описание для Assert.Equals () из документации MSDN: Не используйте этот метод.

Вот и все, полное объяснение. Э-э ... хорошо, но тогда ... почему это там? Это устаревший метод из более ранней версии фреймворка? Что-то, что должно использоваться только другими сборками Microsoft?

Это просто заставляет меня хотеть использовать это все больше, зная, что я не должен. ; -)

Кто-нибудь знает?

Ответы [ 4 ]

22 голосов
/ 28 января 2009

.Equals наследуется от объекта. Он указан как «Не использовать этот метод», поэтому пользователи не будут путать его с методом AreEqual

4 голосов
/ 28 января 2009

Все объекты в .NET являются производными от Объект .

Объект имеет метод .Equals ().

Очевидно, что метод .Equals () для этого конкретного объекта не делает ничего полезного, поэтому документы предупреждают вас, что он не делает ничего полезного.

1 голос
/ 30 декабря 2013

Assert.Equals, так же как и основанный на нем метод класса Object.Equals, идеально подходит для сравнения объектов. Однако ни один из методов не полезен для автономного обнаружения и создания отчетов или ошибок в модульном тестировании, поскольку Object.Equals возвращает логическое значение, а не броски, если значения не равны. Это проблема, если использовать ее в модульном тесте следующим образом:

Assert.Equals(42, ComputeMeaningOfLife());

Помимо проблемы, связанной с тем, что этот модульный тест, возможно, выполняется слишком долго :-), этот тест молча был бы успешным, даже если метод Compute дает неправильный результат. Правильный метод для использования - Assert.AreEqual, который ничего не возвращает, но выдает исключение, если параметры не равны.

Assert.Equals был добавлен, чтобы код, как в приведенном выше примере, не возвращался к Object.Equals и не принимал во внимание модульный тест. Вместо этого при вызове из модульного теста Assert.Equals всегда выдает исключение, напоминающее о том, что вы не должны его использовать.

1 голос
/ 14 февраля 2009

Оно было изменено в 2008 году (возможно, с пакетом обновления 1), чтобы при вызове проваливать тест, поэтому людям, которые использовали его случайно, сказали, что они действительно не должны его использовать.

...