• 0
  • 2
分享

写在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,有表述错误的地方欢迎评论区指正。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言:消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等,这里准备了一些rabbitmq面试题,你会么?rabbitmq 的使用场景有哪些?1、异步调用2、应用解耦3、流量削峰4、数据冗余5、延迟队列6、分布式事务......rabbitmq 有哪些重要的角色?1、生产者:发送消息的角色。2、消费者:接收并处理消息的角色。3、消息代理者:传递消息的角色,本身不产生和消...
            5 4 1596
            分享
          • 背景介绍一直以来,性能测试是被一部分人遗忘,又让另一部分人无可奈何的东西。在绝大部分的创业公司,性能测试基本上都是被遗忘的,他们认为功能测试和稳定性测试才是重点,而在中等规模的公司中一部分测试人员考虑进行性能测试,却无从下手。这个系列,从baidu测试工程师的工作实践出发,介绍移动端性能测试的通用方法和结合产品特点的不同侧重。随着流量费用的降低,越来越多的人开始在公交地铁等移动场景使用视频应用。视频类的应用会更多关注播放流畅度、下载等性能指标,下面介绍的是百度视频的性能测试方法。百度视频是第三方视频资源聚合类产品,主要提供用户在线播放、离线下载各种视频服务,提供PC、Android、iOS三端...
            0 0 1028
            分享
          • 忙忙碌碌又一年,2021的计划完成了么?目标达成了么?买房、买车、脱单、加薪等等,都是很现实的事儿,2021了,80后步入40,90后步入30,曾经的追风少年,如今的油腻大叔,突然感觉时间好残酷,职场也一样,竞争、裁员,不知道下一刻的命运,只有强者才能主宰自己的命运,无畏未来,正因为如此,大城市才兴起了很多付费的自习室,静心提升。作为一名测试人员,如何成为强者呢?如果想要在测试领域好好发展,提升自己的测试技术是必不可少的,但是,选对方向更为重要,功能测试、自动化测试、测试开发、性能测试、安全测试、测试管理,每个测试方向都不简单,但是,大环境就是,你不会点代码、熟悉两个框架原理啥的,都是算low...
            0 0 852
            分享
          • 第一阶段:API自动化之前的想法是:通过API创建数据,访问数据,进行数据操作,存储数据库,通过模拟前端的操作来想象API的访问流程。然后,验证数据库是否存储正确。后来发现该想法流程就是错误的。问题:1、模拟前端的操作需要对每个前端操作后调用的API非常熟悉,这已经超过了测试的范围,属于开发的范畴。2、每个API的集成测试应该是独立的,有顺序的对API的测试使得API之间存在相互依赖的关系。然而每个API的正确性并不能保证。3、API本身是具有很强的独立性,不应该通过前端模拟操作来对其进行相对的验证,操作逻辑应该由前端负责。总结:1、使得API具有健壮性,对正常的数据传输和异常的数据传输,服务...
            9 9 1722
            分享
          • 单元测试单元测试是应用程序测试策略中的基本测试,通过对代码进行单元测试,可以轻松地验证单个单元的逻辑是否正确,在每次构建之后运行单元测试,可以帮助您快速捕获和修复因代码更改(重构、优化等)带来的回归问题。一、单元测试的目的以及测试内容为什么要进行单元测试提高稳定性,能够明确地了解是否正确的完成开发;快速反馈bug,跑一遍单元测试用例,定位bug;在开发周期中尽早通过单元测试检查bug,最小化技术债,越往后可能修复bug的代价会越大,严重的情况下会影响项目进度;为代码重构提供安全保障,在优化代码时不用担心回归问题,在重构后跑一遍测试用例,没通过说明重构可能是有问题的,更加易于维护。单元测试要测什...
            0 0 1702
            分享
      • 51testing软件测试圈微信