现在的位置: 首页 > 综合 > 正文

Nunit单元测试基础知识

2011年06月10日 ⁄ 综合 ⁄ 共 2020字 ⁄ 字号 评论关闭

推行单元测试的目的:

1、 减少BUG提高项目的质量

2、 养成良好的编码习惯,提高开发人员编码水平

 

要测什么What?

最小的可测试软件元素(单元), 包括单元的内部结构(如逻辑和数据流)以及单元的功能和可观测的行为.

 

由于开发方式的不同,单元测试一般划分方法如下:

 

1. 面向对象的软件开发:以Class()作为测试的最小单元。以方法的内部结构作为测试的重点。

 

2. 结构化的软件开发:以模块(函数、过程)作为测试的最小单元。

 

 

如何测试How?

白盒测试方法:测试单元的内部结构, Nunit  Nmock

黑盒测试方法:测试单元的功能和可观测的行为 《通用测试用例》

 

步骤:

一、如何设计单元测试

 

需要弄清楚被测试代码实现的功能和相应的逻辑关系;

 If…else…

 Switch..case…

 While...

 

同时还要考虑到测试的输入内容,以及返回的结果;

用例的设计要保证面面俱到,是否覆盖了每一条路径。
  

而如何做到面面俱到这就需要恶我们对每个函数进行详细的分析,将分析和讨论的结果归入相关的测试库中。初期工作的进度慢并不要紧,只要能做得很详细对于以后的测试还是有很大的帮助。或许以后的测试中,只要直接调用原来写过的测试类库,修改部分简单的语句就可以实现新模块的单元测试了

[TestFixture]表示:类包含了测试代码(这个特性可以被继承)。这个类必须是公有的,这个类还必须有一个默认构造函数

[Test]表示它是一个测试方法。测试方法的返回值必须为void并且不能带有参数

 [SetUp]属性:用来标识方法,在开始所有测试之前执行,用来在测试前初始化一些资源,比如初始化类。

[TearDown]属性:用来标识方法,在所有测试完成之后执行,用来释放一些资源。

[Ignore]属性:用来标识方法,指示这个方法由于某些原因暂时不需要测试(比如没有完成相关代码)

 

 

二、Nunit工具的使用

 

    参考 :Nunit框架在VS2005环境下单步调试  

 

三、Nunit常用类和方法

Assert(断言)

如果断言失败,方法将没有返回,并且报告一个错误。

如果一个方法中包括了多个断言,在失败的断言之后的所有断言将不会被执行。基于这个原因,最好是为每个测试的断言使用try语句。

 

1、法测试二个参数是否相等

Assert.AreEqual( int expected, int actual );

Assert.AreEqual( decimal expected, decimal actual );

。。。。

 

2、测试二个参数是否引用同一个对象

Assert.AreSame( object expected, object actual );

Assert.AreNotSame( object expected, object actual );

 

3、测试一个对象是否被一个数组或列表所包含

Assert.Contains( object anObject, IList collection );

 

   比较断言:

4、测试一个对象是否大于另一个对象

Assert.Greater( int arg1, int arg2 );

 

5、法测试一个对象是否小于另一个对象

Assert.Less( int arg1, int arg2 );

 

类型断言:

Assert.IsInstanceOfType( Type expected, object actual );

 

条件测试:

Assert.IsTrue( bool condition );

Assert.IsFalse( bool condition);

Assert.IsNull( object anObject );

Assert.IsNotNull( object anObject );

Assert.IsNaN( double aDouble );

Assert.IsEmpty( string aString );

Assert.IsNotEmpty( string aString );

Assert.IsEmpty( ICollection collection );

Assert.IsNotEmpty( ICollection collection );

 

字符串断言(StringAssert)提供了许多检验字符串值的有用的方法

StringAssert.Contains( string expected, string actual );

StringAssert.StartsWith( string expected, string actual );

StringAssert.EndsWith( string expected, string actual );

StringAssert.AreEqualIgnoringCase( string expected, string actual );

 

四、属性(Attribute):

TestFixtureAttribute (NUnit 2.0)

此特性标记一个类包含有测试方法,以及可选的安装(setup)和卸载(teardown)方法。

抱歉!评论已关闭.