Возможно вы об этом уже знаете, но я не могу не поделиться моей находкой (хотя для кого-то это будет никакая и не находка
)
Недавно перечитывал доку по 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>>