Нанит это утверждать.Равно бросает исключение " утверждать.Равно не должны использоваться для утверждения"
недавно я попытался использовать метод Assert.Равно () при написании нового теста NUnit. При выполнении этого метода выдает AssertionException
о том, что
Assert.Equals should not be used for Assertions.
Это немного сбивает с толку на первый взгляд. Что здесь происходит?
2 ответа:
Assert
является статическим классом, наследующим от System.Объект, как и все классы неявно в c#. Система.Объект реализует следующий метод:static bool Equals(object a, object b)
методы на Assert, которые предназначены для сравнения равенства являются
Assert.AreEqual()
методы. Поэтому, вызываяObject.Equals()
метод через класс Assert в модульном тесте, безусловно, является ошибкой. Чтобы предотвратить эту ошибку и избежать путаницы, разработчики NUnit намеренно скрылиObject.Equals
в классе Assert с реализацией, которая вызывает исключение. Вот реализация:/// <summary> /// The Equals method throws an AssertionException. This is done /// to make sure there is no mistake by calling this function. /// </summary> /// <param name="a"></param> /// <param name="b"></param> [EditorBrowsable(EditorBrowsableState.Never)] public static new bool Equals(object a, object b) { // TODO: This should probably be InvalidOperationException throw new AssertionException("Assert.Equals should not be used for Assertions"); }
конечно, само сообщение об исключении сбивает с толку, но по крайней мере оно позволяет вам знать, что вы сделали что-то неправильно.