Assert.That(<Проверяемый объект>, <Способ проверки>)
Например:
Assert.That( myString, Is.EqualTo("Hello") );
или (одинаковые проверки)
Assert.That( myString, new EqualConstraint("Hello") );
Если класс тестирующий логику (помеченный атрибутом [TestFixture]) наследован от класса AssertionHelper то вместо конструкции Assert.That можно использовать метод Expect().или (одинаковые проверки)
Assert.That( myString, new EqualConstraint("Hello") );
Ну а дальше больше
Теперь давайте разберем как вообще подставлять Constraint классы в поле <Способ проверки>. Как вы уже видели ранее можно напрямую создавать новые экземпляры класса с помощь new. Но это просто не удобочитаемо для человека. Поэтому разработчики NUnit создали класс Is, который выполняет создание нового экземпляра Constraint за нас, с помощью своих статических методов.
Is.EqualTo
реализован как
По созданию Constraint проверок все.реализован как
public static EqualConstraint EqualTo(object expected) { return new EqualConstraint(expected); }
Теперь маленький обзор документации NUnit.
Эквивалентность – Equal Constraint
Проверка на совпадение значений проверяемого объекта и значением Constraint. При проверке могут быть задействованы модификаторы точности сравнения.Assert.That(2 + 2, Is.EqualTo(4)); // равно //или Assert.That(2 + 2, Is.Not.EqualTo(5)); // не равно
- IgnoreCase – игнорировать регистр символов (для строк)
- AsCollection – сравнение массивов различных размерностей поэлементно. Модификатор не работает для зубчатых массивов (массив массивов), потому что они не имеют общей коллекции.
- NoClip – модификатор отображения сообщений о сравнении строк.
- Within – специальный модификатор с дополнительными модификаторами для определения точности сравнения чисел и времени. Точность чисел может быть задана допуском отклонения значения, отклонения в процентах и для чисел с плавающей точкой в единицах последней значащей цифры (Ulps). Точность времени (DateTimes) или промежутка времени (TimeSpans) может изменяться от дней до тиков.
- Using – использование определенных пользователем классов сравнения.
Идентичность – Same As Constraint
Идентичны ли объект Constraint и проверяемый объект.Exception ex1 = new Exception(); Exception ex2 = ex1; Assert.That(ex2, Is.SameAs(ex1));
Предопределенные значения – Condition Constraints
Сравнение с часто используемыми значениями. Такими как Null или True/False.- Is.Null – проверка на Null
- Is.True – проверка на True
- Is.False – проверка на False
- Is.NaN – проверка является ли число с плавающей точкой числом.
- Is.Empty – проверка на пустую строку, папку или коллекцию.
- Is.Unique – уникальность элементов массива, коллекции или любого IEnumerable объекта.
Проверки больше - меньше – Comparison Constraints
- Is.GreaterThan – сравнение на больше (Проверяемый объект > Значение проверки)
- Is.GreaterThanOrEqualTo или Is.AtLeast – сравнение на больше или равно (Проверяемый объект >= Значение проверки)
- Is.LessThan – сравнение на меньше (Проверяемый объект < Значение проверки)
- Is.LessThanOrEqualTo или Is.AtMost – сравнение на меньше или равно (Проверяемый объект <= Значение проверки)
- Is.InRange – сравнение на попадание в диапазон значений, для массивов или коллекций нужно использовать модификаттор All (проверка каждого значения)
Проверки пути файлов и каталогов – Path Constraints
Данный вид Constraints предназначен для проверок формируемых путей приложения без манипуляций с файловой системой. Перед сравнением формат путей приводиться к общему (каноническому) виду. Что позволяет делать сравнение для различных файловых систем.- Is.SamePath – равнозначность путей
- Is.SubPath – вхождение одного пути в другой
- Is.SamePathOrUnder – равен или содержит
Проверки типов – Type Constraints
Проверка соответствия типов. Можно определять является ли объект определенного типа, является наследником типа или возможно ли присвоение типов.- Is.TypeOf(Type) – точное соответствие типов
- Is.InstanceOfType(Type) – проверка принадлежности к определенному типу в цепочке наследования
- Is.AssignableFrom(Type) – проверка возможности присвоения ссылки Type к проверяемому типу
Проверки строк – String Constraints
Проверки строк выполняют тестирование текстовых данных. Попытка проверить не текстовых данных приводит к ошибке и исключению. Существует версия проверки с префиксом Text. Но на данный момент это уже устаревшее решение и в будущем будет удалено из NUnit. Для всех проверок применим модификатор IgnoreCase (игнорировать регистр).- Is.StringContaining – проверка наличия подстроки в проверяемой строке
- Is.StringStarting – проверка наличия подстроки в начале проверяемой строки
- Is.StringEnding – проверка наличия подстроки в конце проверяемой строки
- Is.StringMatching – проверка строки на удовлетворение шаблону
P.S. Пока все. Скоро дополню пост. В коментариях жду пожеланий и критики.
Полезные ссылки по NUnit (приложение):
NUnit 2.5: что нового? - замечательный доклад Сергея Попова