Избыточные операторы assert в инфраструктуре модульных тестов .NET - PullRequest
0 голосов
/ 16 июня 2010

Не правда ли, что каждое утверждение assert может быть переведено в Assert.IsTrue, поскольку по определению вы утверждаете, является ли что-то истинным или ложным?AreEquals, IsNotNull и особенно IsFalse?Мне кажется, я трачу слишком много времени на размышления о том, какой Assert использовать при написании модульных тестов.

Ответы [ 5 ]

4 голосов
/ 16 июня 2010

Вы можете использовать Assert.IsTrue все время, если хотите.Разница составляет Assert.AreEqual, и подобное даст вам лучшее сообщение об ошибке, когда утверждение не выполнено.

NUnit (и, вероятно, другие структуры) теперь поддерживает синтаксис, подобный этому:

Assert.That(foo, Is.Equal.To(bar))

4 голосов
/ 16 июня 2010

Учитывая достаточно дополнительного кода с вашей стороны, да, это правда, что почти каждый Assent.XXX может быть превращен в Assert.IsTrue вызов. Однако есть такие, которые очень сложно перевести, например, Throws

Assert.Throws<ArgumentNullException>(() => x.TestMethod(null));

Перевод этого значения в Assert.IsTrue возможен, но на самом деле не стоит усилий. Намного лучше использовать метод Throws.

2 голосов
/ 16 июня 2010

Да,

AreEqual (obj1, obj2) в основном делает Assert.IsTrue (obj1.Equals (obj2)). Так что я бы сказал, что это правда.

Но, возможно, они вводят эти перегрузки для читабельности, например, дают понять, что они хотят сравнить два объекта или проверить, равно ли значение ложному.

1 голос
/ 16 июня 2010

Это очень просто - сделать ваш тестовый код более читабельным .

Что более читабельно

Assert.IsTrue(quantity > 0)

или

Assert.That(quantity, Is.GreaterThan( 0 ))

Тебе не кажется, что второй вариант более читабелен?

0 голосов
/ 16 ноября 2010

Вы можете написать независимые от фреймворка утверждения, используя библиотеку с именем Следует.Он также имеет очень хороший свободный синтаксис, который можно использовать, если вам нравятся свободные интерфейсы.У меня был пост в блоге, связанный с тем же.

http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html

...