TestNG

作者: Zzz_c7ec | 来源:发表于2018-01-02 15:52 被阅读0次

TestNG简介. 

1.TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试到集成测试     这个是TestNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试。设计目标的不同,对比junit的只适合用于单元测试,TestNG无疑走的更远。     可以用于集成测试,这个特性是我选择TestNG的最重要的原因。

2. 测试的过程的三个典型步骤,注意和junit(4.0)相比,多了一个将测试信息添加到testng.xml文件或者build.xml     测试信息尤其是测试数据不再写死在测试代码中,好处就是修改测试数据时不需要修改代码/编译了,从而有助于将测试人员引入单元测试/集成测试。

3. 基本概念,相比junit的TestCase/TestSuite,TestNG有suite/test/test method三个级别,即将test/test method明确区分开了。     junit中的TestCase将test/test method混合,比较容易让人概念不清晰,尤其是新手。

Annotation

这里是TestNG中用到的annotation的快速预览,还有它们的属性。

@BeforeSuite:        被注释的方法将在所有测试运行前运行

@AfterSuite:        被注释的方法将在所有测试运行后运行

@BeforeTest:        被注释的方法将在测试运行前运行

@AfterTest:        被注释的方法将在测试运行后运行

@BeforeGroups:        被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行。

@AfterGroups:        被配置的方法将在列表中的gourp后运行。这个方法保证在最后一个属于这些组的测试方法调用后立即执行。

@BeforeClass:        被注释的方法将在当前类的第一个测试方法调用前运行。

@AfterClass:        被注释的方法将在当前类的所有测试方法调用后运行。

@BeforeMethod:        被注释的方法将在每一个测试方法调用前运行。

@AfterMethod:        被注释的方法将在每一个测试方法调用后运行。

@DataProvider    标记一个方法用于为测试方法提供数据。

被注释的方法必须返回Object[][], 其中每个Object[]可以指派为这个测试方法的参数列表。

从这个DataProvider接收数据@Test方法需要使用一个和当前注释相同名称的dataProvider名称

name         这个DataProvider的名称

@Factory    标记方法作为一个返回对象的工厂,这些对象将被TestNG用于作为测试类。这个方法必须返回Object[]

@Parameters    描述如何传递参数给@Test方法

value    用于填充这个方法的参数的变量列表

@Test        标记一个类或方法作为测试的一部分

alwaysRun     如果设置为true,这个测试方法将总是运行,甚至当它依赖的方法失败时。

dataProvider     这个测试方法的data provider的名称

dataProviderClass     用于查找data provider的类。

如果不指定,将在当前测试方法所在的类或者它的基类上查找data provider。

如果这个属性被指定, 则data provider方法需要是指定类的static方法。

dependsOnGroups     当前方法依赖的组列表

dependsOnMethods     当前方法依赖的方法列表

description     当前方法的描述

enabled     当前类的方法/方法是否被激活

expectedExceptions     测试方法期望抛出的异常列表。如果没有异常或者抛出的不是列表中的任何一个,当前方法都将标记为失败.

groups     当前类/方法所属的组列表

invocationCount     当前方法被调用的次数

successPercentage     当前方法期望的成功率

sequential     如果设置为true,当前测试类上的所有方法保证按照顺序运行。甚至测试们在parallel="true"的情况下.

这个属性只能用于类级别,如果用于方法级别将被忽略。

timeOut     当前方法容许花费的最大时间,单位毫秒。

threadPoolSize     当前方法的线程池大小。方法将被多线程调用,次数由invocationCount参数指定

注意:如果invocationCount没有指定则这个属性将被忽略

上面是TestNG中用到的annotation列表,从中我们可以看到TestNG提供的一些特性

1. before方法和after方法    带来了足够丰富的测试生命周期控制

2. dependsOnGroups/dependsOnMethods 提供了依赖检查机制,并可以严格控制执行顺序

3. DataProvider 使得对同一个方法的测试覆盖变的非常轻松,非常适合进行边界测试,只要给出多种测试数据就可以针对一个测试方法进行覆盖

4. expectedExceptions 使得异常测试变的非常轻松

5. invocationCount/threadPoolSize 终于可以简单的直接进行多线程测试了,这个绝对是junit的超级弱项,回想junit中那个万恶的System.exist(0)...

6. timeOut 终于不用死等然后手工强行关闭测试,TestNG想的太周到了

 调用TestNG由几种不同方法:

* 使用testng.xml文件

* 使用ant

* 从命令行

相关文章

网友评论

      本文标题:TestNG

      本文链接:https://www.haomeiwen.com/subject/xoifnxtx.html