【Nunit入门系列讲座 6】NUnit断言- 条件断言
2012-02-06 09:40
253 查看
作者:shinoy
时间:2012/2/3 版权所有,侵权必究。
出处:http://blog.csdn.net/snowshinoy
本节示例代码下载:示例代码
首先,对喜欢本系列文章的朋友感觉非常抱歉,由于年前项目太忙加上杂事太多,所以本系列的更新停滞了一段时间。现在虽然依然挺忙,还是决定抽点时间不断更新,希望大家继续支持。在这一节中,我们来看下NUnit中的条件断言语句,顾名思意,条件断言就是根据条件的成立与否来决定测试是否通过。由于条件判断的结果是一个布尔量,也就是我们常说的是与否,而在.NET中这种布尔量可以在多种地方出现-函数的返回,类成员属性,某个用户自己定义的比较过程等等。这就决定了NUnit的条件断言是可以很灵活的,从最简单的判断一个值,到自定义一些复杂的条件完成比较复杂的测试。
一、条件语句及布尔量
学习过某种编程语言的朋友对这2个概念都不会陌生。大部分的高级语言都定义了布尔类型,该类型的变量可以有TRUE或者FALSE两种值。而条件语句是程序中分支存在的前提,更是必不可少,条件语句结果值就是布尔量。但是布尔类型并不是在所有的语言中都支持,例如C99标准之前的C语言。这类语言中,一般通过其他方式来表示TRUE或者FALSE的概念,C语言中使用的是0值和非0值来表示FALSE和TRUE。所以很多从C语言转入.NET的朋友就会想当然的认为BOOL量和整型可以通用,但是其实在.NET中,布尔量是一个基本的类型,不能和数值类型直接比较和赋值。
我们在.NET中这样初始化布尔变量:
二、条件断言及在测试中应用
我们先来熟悉下NUnit中支持的条件断言语句:
这样的格式与我们在前面学习的相等断言基本一样,所以我们很快就能看出他的用法。IsTrue 和 True方法主要用来判断condition这个条件语句是否为真,如果不为真则抛出AssertionException.异常给NUnit,IsFalse和False主要相应就是判断condition这个条件语句是否为假,不为假再抛出AssertionException.
我们现在使用条件断言来测试讲座3里我们用到的计算器程序(参考http://blog.csdn.net/snowshinoy/article/details/6967054),这个程序我们已经知道包含了add和sub方法,并且暂时只支持int类型。我们将讲座3里的测试用例,重新使用新的条件断言重新实现一遍。
我们来看下测试结果,我们只运行使用条件断言新定义的测试AddTestbyCondition和SubTestbyCondition
修改断言,看看如果是失败的情况:
可以很清楚的看到,我们的条件断言起了作用,测试在这里由于条件的不成立失败了。我们在实际的测试中,可以灵活的根据需要建立条件表达式,并通过条件断言来设定测试判断,例如可以判断某个dialog box 的返回是否是哪种输入,来决定测试的流程。今后我们会有复杂使用的例子。
三、结语
新年的第一篇,就先说这么多吧。希望大家有兴趣的能继续关注本系列,有问题可以联系我讨论28345697@qq.com或者在http://www.iquicktest.com/ask/上提问。
白盒测试QQ交流群:
Rss订阅IQuickTest(关于如何订阅?)
GoogleReader订阅地址: http://feeds.feedburner.com/iquicktest
时间:2012/2/3 版权所有,侵权必究。
出处:http://blog.csdn.net/snowshinoy
本节示例代码下载:示例代码
首先,对喜欢本系列文章的朋友感觉非常抱歉,由于年前项目太忙加上杂事太多,所以本系列的更新停滞了一段时间。现在虽然依然挺忙,还是决定抽点时间不断更新,希望大家继续支持。在这一节中,我们来看下NUnit中的条件断言语句,顾名思意,条件断言就是根据条件的成立与否来决定测试是否通过。由于条件判断的结果是一个布尔量,也就是我们常说的是与否,而在.NET中这种布尔量可以在多种地方出现-函数的返回,类成员属性,某个用户自己定义的比较过程等等。这就决定了NUnit的条件断言是可以很灵活的,从最简单的判断一个值,到自定义一些复杂的条件完成比较复杂的测试。
一、条件语句及布尔量
学习过某种编程语言的朋友对这2个概念都不会陌生。大部分的高级语言都定义了布尔类型,该类型的变量可以有TRUE或者FALSE两种值。而条件语句是程序中分支存在的前提,更是必不可少,条件语句结果值就是布尔量。但是布尔类型并不是在所有的语言中都支持,例如C99标准之前的C语言。这类语言中,一般通过其他方式来表示TRUE或者FALSE的概念,C语言中使用的是0值和非0值来表示FALSE和TRUE。所以很多从C语言转入.NET的朋友就会想当然的认为BOOL量和整型可以通用,但是其实在.NET中,布尔量是一个基本的类型,不能和数值类型直接比较和赋值。
我们在.NET中这样初始化布尔变量:
bool on = 1;就会得到一个编译错误:error CS0031: Constant value '1' cannot be converted to a 'bool',而这样的赋值在C语言中是没有什么问题的。大家在使用条件断言时,一定要注意这样的问题,不能想当然的认为某些类型可以和布尔类型通用。
二、条件断言及在测试中应用
我们先来熟悉下NUnit中支持的条件断言语句:
Assert.IsTrue( bool condition ); Assert.IsTrue( bool condition, string message ); Assert.IsTrue( bool condition, string message, object[] parms ); Assert.True( bool condition ); Assert.True( bool condition, string message ); Assert.True( bool condition, string message, object[] parms ); Assert.IsFalse( bool condition); Assert.IsFalse( bool condition, string message ); Assert.IsFalse( bool condition, string message, object[] parms ); Assert.False( bool condition); Assert.False( bool condition, string message ); Assert.False( bool condition, string message, object[] parms );
这样的格式与我们在前面学习的相等断言基本一样,所以我们很快就能看出他的用法。IsTrue 和 True方法主要用来判断condition这个条件语句是否为真,如果不为真则抛出AssertionException.异常给NUnit,IsFalse和False主要相应就是判断condition这个条件语句是否为假,不为假再抛出AssertionException.
我们现在使用条件断言来测试讲座3里我们用到的计算器程序(参考http://blog.csdn.net/snowshinoy/article/details/6967054),这个程序我们已经知道包含了add和sub方法,并且暂时只支持int类型。我们将讲座3里的测试用例,重新使用新的条件断言重新实现一遍。
[Test] public void AddTestbyCondition() { Calculate calculate = new Calculate(); Assert.True((calculate.add(9, 3) == 12), "add 9 and 3 return bad result"); Assert.IsTrue((calculate.add(8, 3) == 11),"add 8 and 3 return bad result"); } [Test] public void SubTestbyCondition() { Calculate calculate = new Calculate(); Assert.False((calculate.sub(10, 2) != 8), "sub 10 with 2 return bad result"); Assert.IsFalse((calculate.sub(10, 1) != 9), "sub 10 with 1 return bad result"); }
我们来看下测试结果,我们只运行使用条件断言新定义的测试AddTestbyCondition和SubTestbyCondition
修改断言,看看如果是失败的情况:
[Test] public void AddTestbyCondition() { Calculate calculate = new Calculate(); Assert.True((calculate.add(9, 3) == 12), "add 9 and 3 return bad result"); Assert.IsTrue((calculate.add(8, 1) == 11),"add 8 and 1 return bad result"); } [Test] public void SubTestbyCondition() { Calculate calculate = new Calculate(); Assert.False((calculate.sub(10, 2) != 8), "sub 10 with 2 return bad result"); Assert.IsFalse((calculate.sub(10, 1) != 8), "sub 10 with 1 return bad result"); }
可以很清楚的看到,我们的条件断言起了作用,测试在这里由于条件的不成立失败了。我们在实际的测试中,可以灵活的根据需要建立条件表达式,并通过条件断言来设定测试判断,例如可以判断某个dialog box 的返回是否是哪种输入,来决定测试的流程。今后我们会有复杂使用的例子。
三、结语
新年的第一篇,就先说这么多吧。希望大家有兴趣的能继续关注本系列,有问题可以联系我讨论28345697@qq.com或者在http://www.iquicktest.com/ask/上提问。
白盒测试QQ交流群:
Rss订阅IQuickTest(关于如何订阅?)
GoogleReader订阅地址: http://feeds.feedburner.com/iquicktest
相关文章推荐
- 【Nunit入门系列讲座 4】NUnit断言- 对象识别断言
- 【Nunit入门系列讲座 3】NUnit断言- 如何使用断言
- 【Nunit入门系列讲座 1】Nunit的安装及功能介绍
- 【Nunit入门系列讲座 5】Nunit如何测试程序中的异常 —— 初识异常及异常测试
- 【Nunit入门系列讲座 2】Nunit的测试集管理
- 【Nunit入门系列讲座 1】Nunit的安装及功能介绍
- 存储备份,从入门到精通系列讲座
- 支持向量机入门系列-2:等式约束极小的最优性条件
- [关注] .NET 2.0开发入门系列讲座推出前两讲
- python入门2,条件,循环,断言
- 【软件测试自动化-QTP系列讲座 17】 == 揭开QTP的神秘面纱 (四)插件开发 == (入门篇)
- 亚马逊AWS在线系列讲座——第1讲:云计算和AWS入门
- Scala入门系列(二):条件控制与循环
- 亚马逊AWS在线系列讲座——第1讲:云计算和AWS入门
- 存储备份,从入门到精通系列讲座!尽量用最通俗的语句表达,初学者请看
- 云星数据---Scala实战系列(精品版)】:Scala入门教程037-Scala实战源码-Scala match语句02 条件守卫
- OpenStack系列讲座2:以公司实际应用讲解OpenStack到底是什么(入门篇)
- 商务英语系列讲座入门篇_得体的应答
- 【转】【系列讲座】OpenMP 入门
- 【系列讲座】OpenMP 入门