3. Утверждение о семантическом тесте
Цели обучения
Это упражнение вводит в класс Assert.That и связанные с ним классы.
Введение и мотивация
В тестовых фреймах NUnit и Unity имеется ряд классов для утверждения объектов таким образом, который ближе к естественному языку. Это делает заявления легко читаемыми.
Вот несколько примеров того, как использовать классы семантических утверждений:
Assert.That(myValue, Is.GreaterThan(20));
Assert.That(str, Does.Contain("a string").And.Contain("something else"));
Здесь мы проверяем, что переменная myValue больше 20, а затем, что строка str содержит и “строку”, и “что-то еще”.
Семантическое утверждение также известно как Модель ограничений. Прочие, кроме It и Does есть множество других ключевых слов, которые могут быть использованы.
2010 год
В течение 3_SemanticTestAssertion образец, существует класс с именем ValueOutputter, которая возвращает значения различных типов.
Написать тесты, которые утверждают на различных выходах. Следует проверить, что:
GetInt()возвращает 11.GetString()возвращает строку, содержащую словаstringиasserted.GetFloat()возвращает значение, которое примерно равно 19.33.
Подсказки
- Утверждение на плавающее число может потребовать проверки на то, что значение больше 19.33 и меньше 19.34, так как выход не является рациональным.
Решение
Полное решение упражнения можно найти в примере 3_SemanticTestAssertion_Solution.
internal class ValueOutputterTests
{
[Test]
public void GivesExpectedInt()
{
var outputterUnderTest = new ValueOutputter();
var number = outputterUnderTest.GetInt();
Assert.That(number, Is.EqualTo(11));
}
[Test]
public void GivesExpectedString()
{
var outputterUnderTest = new ValueOutputter();
var str = outputterUnderTest.GetString();
Assert.That(str, Does.Contain("string").And.Contain("asserted"));
}
[Test]
public void GivesExpectedFloat()
{
var outputterUnderTest = new ValueOutputter();
var number = outputterUnderTest.GetFloat();
Assert.That(number, Is.GreaterThan(19.33f).And.LessThan(19.34f));
}
}
Дополнительные ресурсы
- Модель утверждения на основе ограничений