您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > TestNG官方文档中文版
1TestNG官方文档中文版(1)-介绍最近决定开始使用TestNG来替代junit,作为未来的单元测试基础组件。google了一下没有找到好的详细的文档,最后发现官网上的文档其实挺全的,决定翻译一下。TestNG的官方文档请见:介绍TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。编写一个测试的过程有三个典型步骤:*编写测试的业务逻辑并在代码中插入TestNGannotation*将测试信息添加到testng.xml文件或者build.xml中*运行TestNG在欢迎页面上可以找到快速入门示例。下面是这篇文档使用的概念:*suite由xml文件描述。它包含一个或多个测试并被定义为suite标签*test由test描述并包含一个或者多个TestNG类*TestNG类是包含至少一个TestNGannotation的java类,由class标签描述并包含一个或多个测试方法*测试方法是源文件中带有@Testd注释的java方法TestNG测试可以被@BeforeXXX和@AfterXXXannotations配置,容许在特定点的前后执行一些java逻辑,这些点上面已经列出。这份手册的剩余部分将讲述以下内容:*所有的annotation列表并带有简短说明,为TestNG的多种功能性提供参考,你可能需要参考为每个annotation提供的代码片段来学习细节。*testng.xml文件描述,它的语法和如果指定它。*多个特性的详细列表和怎样结合annotation和testng.xml来使用它们*******************************************************************************注:上面的内容很简短,但是请注意其中的一些细节。1.TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试到集成测试这个是TestNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试。设计目标的不同,对比junit的只适合用于单元测试,TestNG无疑走的更远。可以用于集成测试,这个特性是我选择TestNG的最重要的原因。2.测试的过程的三个典型步骤,注意和junit(4.0)相比,多了一个将测试信息添加到testng.xml文件或者build.xml测试信息尤其是测试数据不再写死在测试代码中,好处就是修改测试数据时不需要修改代码/编译了,从而有助于将测试人员引入单元测试/集成测试。3.基本概念,相比junit的TestCase/TestSuite,TestNG有suite/test/testmethod三个级别,即将test/testmethod明确区分开了。junit中的TestCase将test/testmethod混合,比较容易让人概念不清晰,尤其是新手。2TestNG官方文档中文版(2)-annotationTestNG的官方文档的中文翻译版第二章,原文请见这里是TestNG中用到的annotation的快速预览,还有它们的属性。@BeforeSuite:被注释的方法将在所有测试运行前运行@AfterSuite:被注释的方法将在所有测试运行后运行@BeforeTest:被注释的方法将在测试运行前运行@AfterTest:被注释的方法将在测试运行后运行@BeforeGroups:被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行。@AfterGroups:被配置的方法将在列表中的gourp后运行。这个方法保证在最后一个属于这些组的测试方法调用后立即执行。@BeforeClass:被注释的方法将在当前类的第一个测试方法调用前运行。@AfterClass:被注释的方法将在当前类的所有测试方法调用后运行。@BeforeMethod:被注释的方法将在每一个测试方法调用前运行。@AfterMethod:被注释的方法将在每一个测试方法调用后运行。属性:alwaysRun对于每个bufore方法(beforeSuite,beforeTest,beforeTestClass和beforeTestMethod,但是不包括beforeGroups):如果设置为true,被配置的方法将总是运行而不管它属于哪个组。对于after方法(afterSuite,afterClass,...):如果设置为true,被配置的方法甚至在一个或多个先调用的方法失败或被忽略时也将运行。dependsOnGroups这个方法依赖的组列表dependsOnMethods这个方法依赖的方法列表enabled这个类的方法是否激活groups这个类或方法所属的分组列表inheritGroups如果设置为true,这个方法被属于在类级别被@Testannotation指定的组@DataProvider标记一个方法用于为测试方法提供数据。被注释的方法必须返回Object[][],其中每个Object[]可以指派为这个测试方法的参数列表。从这个DataProvider接收数据@Test方法需要使用一个和当前注释相同名称的dataProvider名称name这个DataProvider的名称@Factory标记方法作为一个返回对象的工厂,这些对象将被TestNG用于作为测试类。这个方法必须返回Object[]@Parameters描述如何传递参数给@Test方法value用于填充这个方法的参数的变量列表@Test标记一个类或方法作为测试的一部分alwaysRun如果设置为true,这个测试方法将总是运行,甚至当它依赖的方法失败时。dataProvider这个测试方法的dataprovider的名称3dataProviderClass用于查找dataprovider的类。如果不指定,将在当前测试方法所在的类或者它的基类上查找dataprovider。如果这个属性被指定,则dataprovider方法需要是指定类的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官方文档中文版(3)-testng.xmlTestNG的官方文档的中文翻译版第3章,原文请见调用TestNG由几种不同方法:*使用testng.xml文件*使用ant*从命令行这节描述testng.xml的格式(文档的后面会讲到ant和命令行)。当前testng.xml的DTD文件可以从官方找到:。(为4了方便使用,你可能更喜欢浏览HTML版本)。下面是testng.xml文件的一个例子:!DOCTYPEsuiteSYSTEM=Suite1verbose=1testname=Nopackageclassesclassname=NoPackageTest//classes/testtestname=Regression1classesclassname=test.sample.ParameterSample/classname=test.sample.ParameterTest//classes/test/suite你可以指定包名替代类名:!DOCTYPEsuiteSYSTEM=Suite1verbose=1testname=Regression1packagespackagename=test.sample//packages/test/suite在这个例子中,TestNG将在包test.sample中查找所有的类,并只保留带有TestNGannotation的类。你同样可以指定包含或不包含的组和方法:testname=Regression1groupsrunexcludename=brokenTests/includename=checkinTests//run/groupsclassesclassname=test.IndividualMethodsTestmethodsincludename=testMethod//methods/class/classes/test5你同样可以在testng.xml中定义新的组,指定属性的额外详细情况,比如是否并行运行测试,使用多少线程,是否运行junit测试,等等...请查看DTD文件了解完整的特性列表。TestNG官方文档中文版(4)-运行TestNG4-运行TestNGTestNG可以以不同的方式调用:*Commandline*ant*Eclipse*IntelliJ'sIDEA1)命令行假设你已经将TestNG加入到classpath,调用TestNG最简单的方法事下面的:javaorg.testng.TestNGtestng1.xml[testng2.xmltestng3.xml...]必须指定最少一个描述你试图测试的TestNGsuite的xml文件。另外,下面的命令行参数可以使用:命令行参数列表选项参数文档说明-d一个目录生成报告的目录(test-output)-sourcedir分号隔开的目录列表带有javadoc注释的测试源文件目录.这个选项只在使用javadoc类型的annotation时才有效.(例如src/testorsrc/test/org/testng/eclipse-
本文标题:TestNG官方文档中文版
链接地址:https://www.777doc.com/doc-5480517 .html