写在TestNG运行的前面
在之前的文章中介绍了三种运行TestNG的方式(见:TestNG的全部打开方式),从根本来说,都是TestNG为多种集成手段提供的功能,主要的功能都是类似的,不同的环境下会有些差别。
本文是对TestNG官网第四章节的翻译,部分内容增加了作者的理解,并给出一些实际的示例说明。
运行TestNG
TestNG可以通过如下方式运行:
(1)命令行
(2)通过ant
(3)Eclipse
(4)IntelliJ's IDEA
本章节对通过命令行执行TestNG进行详细说明,通过其他方式可以查阅官网的对应章节。
假设,通过命令行运行TestNG的环境已经搭建好(具体参考:Test NG的全部打开方式),运行示例如下:
在作者的环境下的示例。
参数中需要指定最少一个testng.xml。同时,TestNG还提供了非常丰富的其他参数,完成更复杂的功能,具体如下。
1、-configfailurepolicy
可选值为skip|continue,当TestNG在执行测试时,以@Before注解的方法执行失败时,是跳过其他的测试还是继续执行其他的测试。该值默认为skip。
2、-d
设置一个目录,指定TestNG完成测试后的测试报告输出的路径,默认为test-output。
3、-dataproviderthreadcount
当并发执行测试时,数据生成器(dataprovider)并发执行的线程数。该配置决定了数据生成器在并发执行测试时的默认线程数,只有当测试以并发的方式执行时才生效(如执行了-parallel参数)。该配置可以通过testng.xml的配置重新定义,即以配置文件为准。
4、-excludegroups
逗号分隔的组列表。确定本次测试不执行的组。
5、-groups
逗号分隔的组列表。确定本次测试执行的组,如(e.g. "windows,linux,regression")。
6、-listener
逗号分隔的Java类列表,确保在classpath路径上可以找到。指定自定义的测试监听器(监听器可以在测试失败、成功等时候进行特定工作)。监听器类的编写时必须实现org.testng.ITestListener接口。
7、-usedefaultlisteners
可选值为true和false。是否启用默认的监听器,默认为true。
8、-methods
方法列表,方法包括全类名和方法名,如com.example.Foo.f1,com.example.Bar.f2。
9、-methodselectors
方法选择器列表,包括方法和优先级。通过命令行指定方法选择器,例如com.example.Selector1:3,com.example.Selector2:2。方法选择器提供了更为强大的方法选择功能,比include、exclude更为灵活。
10、-parallel
可选值为methods|tests|classes。配置测试是否并行执行,以及并行执行的粒度。如果不配置,即单线程执行测试。如果在配置文件中有配置,则以配置文件为准。
11、-reporter
扩展配置自定义的报告监听器。和-listener参数类似,指定报告监听器。不同的是,该参数可以以JavaBeans格式的属性指定报告实例。如:-reportercom.test.MyReporter:methodFilter=*insert*,enableFiltering=true。相应的属性配置可以出现多次,可以对每个报告生成器进行配置。
12、-sourcedir
路径列表。javadoc文件生成的目录。当测试脚本以javadoc方式编写注释时,该项目有用,例如"src/test",或"src/test/org/testng/eclipse-plugin;src/test/org/testng/testng")。
13、-suitename
测试套件使用的默认名称。通过命令行指定测试套件的名称。如果在配置文件或者脚本中指定了套件名称,会忽略命令行的配置。使用双引号指定测试套件名称,可以在名称中使用空格,类似如下名称"like this"。
14、-testclass
可以在classpath中获取的类列表。通过逗号隔开的测试类列表,如"org.foo.Test1,org.foo.test2"。
15、-testjar
jar文件。指定一个包含测试类的jar文件。如果在该jar文件的根目录存在testng.xml,则会使用该配置文件。否则,会执行该jar文件的全部可以执行的测试类。
16、-testname
测试使用的默认名称。逗号分隔的组列表。通过命令行指定测试的名称。如果在配置文件或者脚本中指定了其他测试名称,会忽略命令行的配置。使用双引号指定测试名称,可以在名称中使用空格,类似如下名称"like this"。
17、-testnames
测试名称列表。在配置文件的<test>标签中,内容与指定的匹配才会执行。
18、-testrunfactory
可以在classpath中找到的java类。通过该配置指定自定义的测试执行类。自定义测试执行类需要实现org.testng.ITestRunnerFactory接口。
19、-threadcount
并行执行时的线程数目。指定了最大的并行执行线程数。该配置只有在并行模式开启时有效(如使用-parallel选项)。如果配置文件有不同配置,则以配置文件优先。
20、-xmlpathinjar
jar包内的TestNG配置文件路径。通过该属性指定在测试jar内的XML路径,例如"resources/testng.xml"。该配置的默认值为"testng.xml",即指向jar文件根目录的"testng.xml"。如果配置了-testjar参数,则忽略-xmlpathinjar的配置。
通过java org.testng.TestNG命令不带任何参数,可以获取全部参数的说明,示例如下。
我们还可以将命令行开关放在文本文件中,例如c:\command.txt,并使用testng命令指定该文件来检索其参数:
并且,TestNG允许通过命令行传递Java虚拟机的属性,例如:
该属性TestNG定义如下。
testng.test.classpath,包含测试类的目录列表。配置该属性后,TestNG将不会在classpath中寻找测试类,而会在设定的路径列表中寻找。当配置文件中使用<package>标签并且在classpath中有很多非测试类时,该属性将非常有用。
通过ANT运行TestNG会更灵活,比如包括的方法、指定参数等等。使用命令行适用于学习TestNG,能够快速的帮助我们入门。
需要注意的是:除了两个特殊的参数外,其他在命令配置的参数,如果和testng.xml配置不同,会以配置文件为准。特殊的参数包括: -includedgroups和-excludedgroups,这两个参数会重写配置文件中的相应配置。
敬请期待下一章节:测试方法。
原文来自https://testng.org,有表述错误的地方欢迎评论区指正。