1. 首页
  2. 教程
  3. 软件测试
  4. 单元测试
  5. NUnit教程

NUnit官方文档(3)特性-断言

NUnit 特性

为了在NUnit下测试一个应用程序,你可以编写一个测试代码,它通过自定义属性来进行特殊的标注。你的测试代码包含了断言,它描述了应用程序正确的工作。

如果你的应用程序在配置文件中保存了设置,NUnit为你提供将这些设置应用到你测试的能力,他们不同于那些应用在产品里的设置。

除了运行单个的程序集之外,NUnit也支持由多个程序集组织的测试,也提供把测试作为NUnit测试工程进行创建和运行。

对于那些安装Visual Studio的并在Windows系统使用NUnit的用户来说,Visual Studio支持是可用的。

 

断言

在任何一个xUnit框架中,断言都是单元测试的核心,NUnit也不例外。NUnit提供了一组丰富的断言,这些断言作为Assert类的静态方法。

如果一个断言失败,方法的调用不会返回值,并且会报告一个错误。如果一个测试包含多个断言,那些紧跟失败断言的断言都不会执行,因为此原因,通常每个测试方法最好只有一个断言。

每个方法可以无消息调用,也可以是带有一个简单文本消息调用,或者带有一个消息以及参数调用。在最后一种情况下,使用了一个提供的文本以及参数来格式化消息。

Assert类提供了最常用的断言。它提供了良好的表现形式,我们将Assert方法按如下分组:

  • 同等(Equality)断言
  • 一致性(Identity)断言
  • 比较(Comparison)断言
  • 类型(Type)断言
  • 条件(Condition)测试
  • 工具(Utility)方法

另外,字符串断言由StringAssert类来提供。

 

同等断言

这些方法测试2个参数是否相等。重载的方法支持普通的值类型,一这样那些不能自动装箱值的语言就可以直接使用他们了。

比较不同类型的数值

比较2个对象的方法重载有特定的意图,这样不同类型的数值可以按期望的那样进行比较。下面的断言会成功:

比较浮点型值

float型和double型的数值通常使用一个附加参数来进行比较,这个参数代表一个误差,在这个误差范围内,它们视为相等。这些特殊值进行处理之后,下面的断言会成功:

注:上面的最后一个例子说明了NUnit2.2.3的一个变化。在以前的发行版本中,这个测试会失败。我们已经做出了这个改变,因为在测试里,新的习惯看起来更加有用。为了避免混淆,我们建议在合适的地方使用新的Assert.IsNaN方法

比较数组

从2.2版本开始,已经实现了专门的功能来比较一维数组。如果2个数组有相同的长度,而且相应的数组元素也相等,那么通过调用Assert.AreEqual方法,这2个数组视为相等。

注: 多维数组,嵌套数组(数组的数组),以及其他集合类型,例如ArrayList目前还不支持。.

一致性断言

Assert.AreSameAssert.AreNotSame测试2个参数引用的对象是否是同一个对象。

Assert.Contains用来测试在一个数组或列表里是否包含该对象。

比较 (NUnit 2.2.4)

下面的方法测试一个对象是否大于另外一个。与Assert的正常顺序相反,这些方法设计为在”中性“English语言里或数学顺序里可读。因此Assert.Greater( x, y )断言里的x大于y(x>y).

下面的方法测试一个对象是否小于另外一个。与Assert的正常顺序相反,这些方法设计为在”中性“English语言里或数学顺序里可读。因此Assert.Less( x, y )断言里的x小于y(x<y).

类型断言

这些方法让我们可以构造一些关于对象类型的断言。

条件测试

测试一个特定条件的方法因他们测试的条件而命名,这些方法测试并把测试的值作为他们的第一个参数以及把一个消息作为第二个参数,第二个参数是可选的。本文提供了下面的方法:

注意Assert.IsEmpty和Assert.IsNotEmpty可以用来测试一个字符串或一个集合。

实用方法

提供2个实用方法,Fail()和Ignore(),是为了让我们对测试过程有更多的控制:

Assert.Fail方法为你提供了创建一个失败测试的能力,这个失败是基于其他方法没有封装的测试。对于开发你自己的特定项目的断言,它也很有用。

这里有一个使用它的例子,这个例子创建一个私有的断言来测试字符串是否包含一个期望的值。

Assert.Ignore方法为你提供在运行时动态忽略一个测试或者一个测试套件(suite)的能力。它可以在一个测试,一个setup或fixture setup的方法中调用。我们建议你只在无效的案例中使用。它也为更多扩展的测试包含或排斥提供了目录能力,或者你可以简单将不同情况下运行的测试运行分解到不同的程序集。

 

StringAssert

StringAssert类提供许多方法,这些方法在检查字符串值时是有用的。

原创文章,作者:若木成林,如若转载,请注明出处:https://www.chinaztest.com/2545.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:983512074@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息