Unity 6.3
0 онлайн 78 гостей 3 в системе
Вход
Программирование в Unity Шаг 174 из 210

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));
 }
}

Дополнительные ресурсы

  • Модель утверждения на основе ограничений