单元测试框架TestNg使用总结

Madge ·
更新时间:2024-11-14
· 820 次阅读

  单元测试的重要性是不言而喻的。但如果没有好的单元测试工具,是无法激起开发人员的欲望。   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是为以构造函数提供参数的形式提供了帮助。



testng 单元 单元测试 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章