Assert.Equals
, так же как и основанный на нем метод класса Object.Equals
, идеально подходит для сравнения объектов. Однако ни один из методов не полезен для автономного обнаружения и создания отчетов или ошибок в модульном тестировании, поскольку Object.Equals
возвращает логическое значение, а не броски, если значения не равны. Это проблема, если использовать ее в модульном тесте следующим образом:
Assert.Equals(42, ComputeMeaningOfLife());
Помимо проблемы, связанной с тем, что этот модульный тест, возможно, выполняется слишком долго :-), этот тест молча был бы успешным, даже если метод Compute дает неправильный результат. Правильный метод для использования - Assert.AreEqual
, который ничего не возвращает, но выдает исключение, если параметры не равны.
Assert.Equals
был добавлен, чтобы код, как в приведенном выше примере, не возвращался к Object.Equals
и не принимал во внимание модульный тест. Вместо этого при вызове из модульного теста Assert.Equals
всегда выдает исключение, напоминающее о том, что вы не должны его использовать.