nUnit: Constraint-Based Assert Mode
От: Aikin Беларусь kavaleu.ru
Дата: 06.05.08 14:57
Оценка: 50 (7)
Возможно вы об этом уже знаете, но я не могу не поделиться моей находкой (хотя для кого-то это будет никакая и не находка )

Недавно перечитывал доку по nUnit и наткнулся на Constraint-Based Assert Mode. Это совсем новый способ описания проверок (Assert) повившийся в версии 2.4.

Если честно при классическом стиле написания у меня всегда возникает вопрос: Что с чем мы сравниваем? Какой аргумент ожидаемый, а какой тестируемый? Да и костность языка ассертов немного напрягала.
В предложенной модели эти вопросы решен на ура: проверяемый аргумент всегда первый, кроме того язык ассертов еще больше приблизился к естественному (анлийскому), так что даже заказчик (ни бум-бум в программировании) может понять что здесь проверяется.

В новом подходе все проверяется через один ассерт Assert.That(valueToTest, concreteConstraint).
Констрэйнты (условия, ограничения,.. не знаю как лучше перевести) формируются с помощью очень удобных хелперов (именно в них (хелперах) вся прелесть новой модели).

Ну, наверное, я уже вам надоел, так что примеры:
1) Сравнение на равенство:
Assert.That(2 + 2, Is.EqualTo(4));
Assert.That(2 + 2 == 4);
Assert.That(2 + 2, Is.Not.EqualTo(5));
Assert.That(2 + 2 != 5);

Assert.That( "Hello!", Is.EqualTo( "HELLO!" ).IgnoreCase );

string[] expected = new string[] { "Hello", World" };
string[] actual = new string[] { "HELLO", "world" };
Assert.That( actual, Is.EqualTo( expected ).IgnoreCase);


2) Проверка условий:
Assert.That( anObject, Is.Null );
Assert.That( anObject, Is.Not.Null );
Assert.That( condition, Is.True );
Assert.That( condition, Is.False );
Assert.That( aDouble, Is.NaN );
Assert.That( aDouble, Is.Not.NaN );
Assert.That( aString, Is.Empty );
Assert.That( collection, Is.Empty );
Assert.That( collection, Is.Unique );


3) Работа с коллекциями:
Assert.That( sarray, Is.All.InstanceOfType(typeof(string)) );
Assert.That( iarray, Is.All.GreaterThan(0) );

Assert.That( sarray, Is.Unique );

Assert.That( iarray, List.Contains(3) );
Assert.That( sarray, List.Not.Contains("x") );

Assert.That( new string[] { "c", "a", "b" }, Is.EquivalentTo( sarray ) );
Assert.That( new int[] { 1, 2, 2 }, Is.Not.EquivalentTo( iarray ) );
Assert.That( new int[] { 1, 3 }, Is.SubsetOf( iarray ) );


и ты ды, которе можно найти по вышепредложенной ссылке.

Ну как? Что скажете? Да, ИМХО, это просто песня!!!!!!!!!
В общем использую их и не нарадуюсь
Чего и вам желаю.
С уважением, Aikin.

P.S. Вообще-то, прочитав страницу по ссылке (не видя примеров), я подумал "чё за фигня, и зачем это было делать?". Пропустил. До примеров я так и не дошел. Позднее просматривал код примеров идущих с NUnit и увидел использование... И прямо заболел новым способом, так он мне понравился.
... << RSDN@Home 1.2.0 alpha 4 rev. 1067>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.