Version: 6000.3
语言: 中文
2. 安排、行动、断言
4. 自定义对比

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包含“字符串”和“其他东西”。

语义断言也称为约束模型。以外ItDoes还有多个其他关键字可以使用。

锻炼

3_SemanticTestAssertion sample,有一个名为ValueOutputter,返回不同类型的值。

编写对不同输出进行断言的测试。应验证:

  • GetInt()返回 11。
  • GetString()返回包含单词stringasserted.
  • 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));
 }
}

其他资源

2. 安排、行动、断言
4. 自定义对比