时间:2011/11/14 版权所有,侵权必究。
出处: http://blog.csdn.net/snowshinoy
本节示例代码下载:示例代码
我们学会了定义测试及测试集后,就可以开始编写我们的测试了。至此,我们就正式进入了实战阶段了。单元测试及白盒测试在很多人眼中有一些些的神秘,很多以前听都没有听说过的名词都会在这里遇到,给人高深莫测的感觉,比如断言啊,打桩啊等等,让很多新手开始就感觉迷惑。事情真的如此复杂么?其实不是!佛家有句话,叫真水无香。真正的白盒测试,其实没有多么花哨难懂。这些名词如果真正理解了他们的含义,你一定会觉得其实真相如此简单。那么就让我们一步步的接近真相吧。
一、什么是断言?
做过手工测试的朋友一定都接触过TP(Test Precedure/Test Plan),这份文档里一个最大的特点就是每个测试步骤都会有一个期望值或者期望结果,用来判定该步测试是否通过。做自动化的朋友在写自动化脚本的时候,一定也会在一些地方设置检查点(Check point),用来决定测试是否通过,以及根据结果来在脚本中做相应处理。好了,说到这里,大家可能也猜到了我想说什么,没错!断言其实就是白盒测试中的检查点或者叫判定,英文叫Assertion。就是这么简单,这样大家应该都理解了吧。举个例子,我们在第二讲中就使用过断言,发现了么?(前文请参考http://blog.csdn.net/snowshinoy/article/details/6955813)
Assert.Fail();
这是个最最简单的断言,该断言直接让测试失败。重新看下第一篇中的3个测试
public class IQuickTestGp1
{
[Test]
public void AutomationTest1()
{
Console.WriteLine("AutomationTest1 Pass");
}
[Test]
public void AutomationTest2()
{
Console.WriteLine("AutomationTest2 Fail");
Assert.Fail();
}
[Test]
public void AutomationTest3()
{
Console.WriteLine("AutomationTest3 Ignore");
Assert.Ignore();
}
}
很清楚,Assert.Ignor()用于让测试被忽略,Assert.Fail()让测试直接失败,那如果想让测试成功呢?很简单,就是没有失败的断言测试即可成功,在这里,我们偷了个懒,压根没有放任何断言在第一个测试中,所以他自然PASS了。
二、相等/不等断言及在测试中如何使用断言
这里我们为了更好地说明,写了一个简单的计算器模块来作为待测模块。该模块由一个叫Calculate的类构成,对外提供2个方法,add()及sub(),代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IQuickTestLesson3
{
public class Calculate
{
public int add(int arg1, int arg2)
{
return arg1 + arg2;
}
public int sub(int arg1, int arg2)
{
return arg1 - arg2;
}
}
}
下面,我们就来编写测试,来测试一下这个功能模块的2个功能是否正确完成了。在此之前让我们学习一下NUnit的2种断言。
Assert.AreEqual( int expected, int actual );
Assert.AreEqual( int expected, int actual, string message );
Assert.AreEqual( int expected, int actual, string message,
params object[] parms );
Assert.AreNotEqual( int expected, int actual );
Assert.AreNotEqual( int expected, int actual, string message );
Assert.AreNotEqual( int expected, int actual, string message,
params object[] parms );
第一组断言的意思是比较expected和actual的值是否相等,如果不等,则测试失败,并且可能输出一些message以便于记录测试失败原因。
第二组断言的意思正好相反,比较expected和actural的值是否不等,如果想等,则测试失败,并且可能输出一些message以便于记录测试失败原因。
通过这2组断言,我们就可以完成对上面的计算器模块的测试。我们的想法很简单,输入2个值,看加和减的结果是不是正确即可。这里我们输入9和3,来测试add功能,可以预想,如果这个功能实现正确那当我们输入9和3时,add给出的结果应该是12。而当我们输入9和2时,add的结果应该不是12。另外我