《TestNG官方文档中文版1-介绍.docx》由会员分享,可在线阅读,更多相关《TestNG官方文档中文版1-介绍.docx(22页珍藏版)》请在第壹文秘上搜索。
1、最近决定开始使用TestNG来替代junit,作为未来的单元测试基础组件。google了一下没有找到好的详细的文档,最后发现官网上的文档其实挺全的,决定翻译一下。TestNG的官方文档请见:1 .介绍TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。编写一个测试的过程有三个典型步骤:* 编写测试的业务逻辑并在代码中插入TeSINGannotation* 将测试信息添加到文件或者中* 运行TeStNG在欢迎页面上可以找到快速入门示例。下面是这篇文档使用的概念:* suite由xml
2、文件描述。它包含一个或多个测试并被定义为suite标签* test由test描述并包含一个或者多个TCStNG类* TestNG类是包含至少一个TeStNGannotation的java类,由class标签描述并包含一个或多个测试方法* 测试方法是源文件中带有TCStd注释的java方法TeStNG测试可以被QBeforeXXX和AfterXXXannOtatiOnS配置,容许在特定点的前后执行一些java逻辑,这些点上面已经列出。这份手册的剩余部分将讲述以下内容:* 所有的annotation列表并带有简短说明,为TeStNG的多种功能性提供参考,你可能需要参考为每个annotation提供
3、的代码片段来学习细节。*文件描述,它的语法和如果指定它。*多个特性的详细列表和怎样结合annotation和来使用它们注:上面的内容很简短,但是请注意其中的一些细节。1 .TeStNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试到集成测试这个是TeStNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试。设计目标的不同,对比junit的只适合用于单元测试,TeStNG无疑走的更远。可以用于集成测试,这个特性是我选择TeStNG的最重要的原因。2 .测试的过程的三个典型步骤,注意和junit(4.0)相比,多了一个将测试信息添加到文件或者测试信息尤其是测试数据不再写死在测试代码中,
4、好处就是修改测试数据时不需要修改代码/编译了,从而有助于将测试人员引入单元测试/集成测试。3 .基本概念,相比junit的TestCaseZTestSuite,TestNG有suite/test/testmethod三个级别,即将test/testmethod明确区分开了。junit中的TestCase将IeStteslmethod混合,比较容易让人概念不清晰,尤其是新手。TeStNG官方文档中文版(2)-annotationTeStNG的官方文档的中文翻译版第二章,原文请见2-Annotation这里是TestNG中用到的annotation的快速预览,还有它们的属性。QBeforeSuit
5、e: eAfterSuite: BeforeTest: QAfterTest: BeforeGroups:被注释的方法将在所有测试运行前运行被注释的方法将在所有测试运行后运行被注释的方法将在测试运行前运行被注释的方法将在测试运行后运行被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行。eAfterGroups:被配置的方法将在列表中的gourp后运行。这个方法保证在最后一个属于这些组的测试方法调用后立即执行。BefOreClass:AfterClass:QBeforeMethod:AfterMethod:属性:alwaysRun被注释的方法将在当前
6、类的第一个测试方法调用前运行。被注释的方法将在当前类的所有测试方法调用后运行。被注释的方法将在每一个测试方法调用前运行。被注释的方法将在每一个测试方法调用后运行。对于每个bufore方法(beforeSuite,beforeTest,beforeTestClass和beforeTestMethod,但是不包括beforeGroups):如果设置为true,被配置的方法将总是运行而不管它属于哪个组。对于after方法(afterSuite,afterClass,.):如果设置为true,被配置的方法甚至在个或多个先调用的方法失败或被忽略时也将运行。dependsOnGroups dependsO
7、nMcthods enabledgroupsinherItGroups annotation指定的组这个方法依赖的组列表这个方法依赖的方法列表这个类的方法是否激活这个类或方法所属的分组列表如果设置为true,这个方法被属于在类级别被TeSttaProvider标记一个方法用于为测试方法提供数据。被注释的方法必须返回ObjCCt口口,其中每个ObjeCt可以指派为这个测试方法的参数列表。从这个DataPrOVider接收数据TeSt方法需要使用一个和当前注释相同名称的(JataProvider名称name这个DataProvider的名称FaCtory标记方法作为一个返回对象的工厂,这些对象将被
8、TeStNG用于作为测试类。这个方法必须返回ObjectParametersvalue描述如何传递参数给TeSt方法用于填充这个方法的参数的变量列表TeSt标记一个类或方法作为测试的一部分alwaysRun如果设置为true,这个测试方法将总是运行,甚至当它依赖的方法失败时。dataProvider这个测试方法的dataprovider的名称dataProviderClass用于查找dataprovider的类。如果不指定,将在当前测试方法所在的类或者它的基类上查找dataprovidero如果这个属性被指定,则dataprovider方法需要是指定类的static方法。dependsOnGr
9、oups当前方法依赖的组列表dependsOnMethods当前方法依赖的方法列表description当前方法的描述enabled当前类的方法/方法是否被激活expectedExceptions测试方法期望抛出的异常列表。如果没有异常或者抛出的不是列表中的任何一个,当前方法都将标记为失败.groups当前类/方法所属的组列表invocationCount当前方法被调用的次数SuccessPercentage当前方法期望的成功率sequential如果设置为true,当前测试类上的所有方法保证按照顺序运行。甚至测试们在ParaIIel=true的情况下.这个属性只能用于类级别,如果用于方法级别
10、将被忽略。timeut当前方法容许花费的最大时间,单位毫秒。threadPoolSize当前方法的线程池大小。方法将被多线程调用,次数由InvocationCount参数指定注意:如果invocationCounl没有指定则这个属性将被忽略注:上面是TestNG中用到的annotation列表,从中我们可以看到TestNG提供的一些特性1. before方法和after方法带来了足够丰富的测试生命周期控制2. dependsOnGroups/dependsOnMethods提供了依赖检查机制,并可以严格控制执行顺序3. DataProvider使得对同一个方法的测试覆盖变的非常轻松,非常适合进
11、行边界测试,只要给出多种测试数据就可以针对一个测试方法进行覆盖4. expectedExceptions使得异常测试变的非常轻松5. invocationCount/threadPoolSize终于可以简单的直接进行多线程测试了,这个绝对是junit的超级弱项,回想junit中那个万恶的(0).6. timeut终于不用死等然后手工强行关闭测试,TeStNG想的太周到了TeStNG官方文档中文版(3)TeStNG的官方文档的中文翻译版第3章,原文请见3-调用TestNG由几种不同方法:* 使用文件* 使用ant* 从命令行这节描述的格式(文档的后面会讲到anl和命令行)。当前的DTD文件可以从
12、官方找到:。(为了方便使用,你可能更喜欢浏览HTML版本).下面是文件的一个例子:!DOCTYPEsuiteSYSTEM你可以指定包名替代类名:在这个例子中,TeStNG将在包e中查找所有的类,并只保留带有TeStNGannOtatiOn的类。你同样可以指定包含或不包含的组和方法:你同样可以在中定义新的组,指定属性的额外详细情况,比如是否并行运行测试,使用多少线程,是否运行junit测试,等等.请查看DTD文件了解完整的特性列表。TeStNG官方文档中文版(4)-运行TeStNG4-运行TeStNGTestNG可以以不同的方式调用:* Commandline* ant* Eclipse* In
13、telliJ,sIDEA1)命令行假设你已经将TeSING加入到CIaSSpath,调用TeSlNG最简单的方法事下面的:javag.TestNG.必须指定最少一个描述你试图测试的TeStNGSUite的Xnll文件。另外,下面的命令行参数可以使用:命令行参数列表选项参数文档说明-d一个目录生成报告的目录(test-OUtPUI)-sourcedir分号隔开的目录列表带有javadoc注释的测试源文件目录.这个选项只在使用javadoc类型的annotation时才有效.(例如src/test”orz,srctestorgtestngeclipse-plugin;srctest/Orgtestngtestng).-testclass可以在classpath路径中找到的逗号分隔的类列表。逗号分隔的类文件列表(例如Testi,.test2z,).-groups逗号分隔的组列表