2010-06-15 5 views
0

Не правда ли, что каждый оператор утверждения может быть переведен на Assert.IsTrue, поскольку по определению вы утверждаете, что-то истинно или ложно?Резервные утверждения assert в платформе .NET unit test

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

ответ

4

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

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

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

+0

Согласовано. Но не удалось ли переопределить IsTrue для улучшения сообщений об ошибках? – Prabhu

+0

@Prabhu Что вы отменяете? IsTrue принимает логическое значение. Что будет делать IsTrue (строка s)? И как он знает, что вы проверяете на равенство или что-то еще? Assert.IsTrue (a

+0

Обычно существует условие IsTrue (условие bool): IsTrue (условие bool, строка errormessage). Это намного короче, чем AreEqual (foo, bar), чем IsTrue (foo.Equals (bar), string.Формат («Ожидаемый: {0} \ nГот: {1}», foo, bar)); .); – Hounshell

2

Да,

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

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

4

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

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

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

1

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

Что более читаемым

Assert.IsTrue(quantity > 0) 

или

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

Не вы думаете, что второй вариант является более удобным для чтения?

0

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

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

Смежные вопросы