您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > TestNG
单元测试框架TestNg使用总结
作者:网络转载 发布时间:[ 2015/2/3 15:17:09 ] 推荐标签:单元测试 TestNG

  单元测试的重要性是不言而喻的。但如果没有好的单元测试工具,是无法激起开发人员的欲望。
  Testng便是利器之一。TestNG是基于Annotation的测试框架的先驱,他拥有通过添加诸如灵活的装置、测试分类、参数测试和依赖方法等特性来克服JUnit3的一些不足之处。下面我将总结一些TestNg的重要特性。
  关于testng.xml
  Testng.xml是以xml记录所有测试的文件。它描述了测试套件的运行时定义,也是testng中运行测试的大工作单元。虽然没有testng.xml文件,测试也很容易被执行。但是随着测试代码的增长,testng.xml提供了方便用来存放所有运行时的配置,如设置有关类,测试,方法,参数,分组的包含与排除等。在测试类越来越多时,它显得非常重要。
  Testing.xml的主要结构
  根标签是<suite>
<suite>标签包含一个或多个<test>标签
<test>标签包含一个或多个<classes>标签
<classes>标签包含一个或多个<method>标签
  一般来说,大多数文件详细到<classes>标签即可。
  Testing.xml的额外标签
<packages>和<package>:顾名思义,它们可以指定一组java包,在这个标签中还可以用包含<include>或者排除<exclude>属性。
<parameter>定义了参数名称和值,它的使用是与测试类当中@Parameters的注释结合使用的,作用和@Dataprovider类似,提供外部参数,功能不如@Dataprovider强大,有局限性。
<suite-files>和<suite-file>:它是用来引入其他testng.xml文件的,这些文件将于当前文件一起执行。
<groups>,<define>和<run>:这三个标签结合使用,在执行时用来指定或者排除一部分的分组,以一个例子见分晓:
<groups>
<define name=”all”>
<include name=”test1”/>
<exclude name=”test2”/>
</define>
<run>
<include name=”all”/>
</run>
<groups>
  注意执行测试的默认顺序是按照testng.xml里给定的顺序执行的。如果你不希望按此顺序执行,请使用preserve-order属性指定为false。如<test name="Regression1" preserve-order="false">。关于testng.xml的标签详细说明,可参见testng.xml的官方文档。
  在实际开发时,我建议testng.xml以功能点为粒度进行划分。然后以总的testng.xml将各个功能点的配置汇总起来。
  参数传递
  Testng改进了传统测试框架无法传递参数的缺点,它能够提供了想测试方法传递参数的简单两种的方法:
  1,在测试方法上加@Parameters标签,然后在testng.xml给出参数。
  2,指定@Dataproviders。
  第一种方式的缺点很明显,它只支持java基本类型,并且在构造值时,无法包含计算逻辑得到需要的参数。
  第二种方式可以想测试方法传递任何有效的java类型。我们倾向于第二种方法来构造参数。
  在此,我们再介绍一种传递参数的方式:工厂注释@Factory,它不同于前面两种参数传递。
  让我们回顾一下普通的testng测试,这些测试类是无参数构造方法(默认构造方法,无法接受参数)的。@Factory的出现,正是弥补这一缺陷而产生的。@Factory的方法在执行时会被首先检查并执行,且只执行一次。执行完以后返回一个Object数组。这个数组里对象的内容便是当前测试方法带了构造函数的实例。在使用@Factory的同时,该测试类还有一个对应带参数的构造函数,@Factory是为以构造函数提供参数的形式提供了帮助。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd