1. 概述

  1. 简介 package 元素

    1. packages
    2. package
    3. exclude
    4. include

2. 背景

  1. 准备

    1. 自动生成了 testng.xml 文件
    2. 已经基本了解了 testng.xml 的结构
  2. 问题

    1. 如何约束测试范围

      1. 假设我有很多的测试用例

        1. 我想一次执行所有
        2. 或者一次执行一部分

3. 环境

  1. ide

    1. idea

      1. 2018.2
  2. 配置文件

    1. testng.xml
  3. 测试包结构

    1. com.test01.Test1
    2. com.test02.Test2
    3. com.test03.Test3
  4. 约定

    1. 配置文件, 我只截取 suite 以下的部分

4. 场景

1. 场景1: 我想执行所有测试类

  1. 概述

    1. 执行所有测试类
  2. 配置文件

     <suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="test 1">
    <packages>
    <package name="com.test01" />
    <package name="com.test02" />
    <package name="com.test03" />
    </packages>
    </test>
    </suite>
  3. 解释

    1. packages

      1. 概述

        1. 包的根元素
      2. 本质

        1. 就是个 容器类元素

          1. 告诉 testng, 这下面都是 package
          2. 感觉这么设计, 可能是为了效率吧
            1. package, class, group 执行的机制有不同
            2. 来回切换损失性能
            3. 所以尽量集中到一起
      3. 注意

        1. 一个 test 只能有一个

          1. 多了会报错
    2. package

      1. 概述

        1. 包元素
      2. 本质

        1. 指定需要执行的包
      3. 属性

        1. name

          1. 测试类的名字
      4. 其他

        1. 使用

          1. 需要几个包, 直接写几个包就行了

2. 场景2: 要执行的包有点多, 我能不能偷个懒

  1. 概述

    1. 执行所有测试类
    2. 想偷懒
  2. 配置文件

     <suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="test 1">
    <packages>
    <package name="com.*" />
    </packages>
    </test>
    </suite>
  3. 解释

    1. package

      1. 概述

        1. 这里使用了 正则
      2. com.*

        1. 正则

          1. 用 正则 匹配了 包名
        2. 注意
          1. testng 没有 通配符

            1. 没有 wildcard

3. 场景3: 要执行的包有点多, 但我又不想执行所有的包

  1. 概述

    1. 执行大部分测试
    2. 但有那么些类, 我又不想执行
  2. 配置文件

     <suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="test 1">
    <packages>
    <package name="com.*" >
    <exclude name="com.test03" />
    </package>
    </packages>
    </test>
    </suite>
  3. 解释

    1. exclude

      1. 概述

        1. 黑名单机制

          1. 名单里的 包, 不会再执行

4. 场景4: 要执行的包有点多, 但我又不想执行所有的包

  1. 概述

    1. 执行少部分测试

      1. 好像和上次又有那么点不同
  2. 配置文件

     <suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="test 1">
    <packages>
    <package name="com.*" >
    <include name="com.test03" />
    </package>
    </packages>
    </test>
    </suite>
  3. 解释

    1. include

      1. 概述

        1. 白名单机制

          1. 只会执行 白名单里 的包
        2. 正则
      2. include 和 exclude 都支持正则
      3. testng 不支持通配符
        1. wildcard
    2. 其他
      1. 在同一个 package 下, 最好不要和 exclude 混用
      2. include 和 exclude 都是支持正则的

5. 一些问题

  1. 概述

    1. 想到的一些问题

1. 问题1: 一个类同时出现在多个 package标签 里, 执行几次

  1. 场景

    1. 同一个 包
    2. 出现在了 多个 package 元素里
  2. 结果

    1. 包里的测试方法, 只执行一次

2. 问题2: 连续两次 include 相同内容

  1. 场景

    1. 同一个类, include 两次
  2. 结果

    1. 包里的测试方法, 只执行一次

3. 问题3: 连续两次 exclude 相同内容

  1. 场景

    1. 同一个类, exclude 两次
  2. 结果

    1. 包里方法不执行
    2. 测试正常执行

4. 问题4: 先 include 再 exclude

  1. 场景

    1. 同一个包, 先 include 再 exclude
  2. 结果

    1. 包被 exclude
    2. 用例正常执行

5. 问题5: 先 exclude 再 include

  1. 场景

    1. 同一个包, 先 exclude 再 include
  2. 结果

    1. 包被 exclude

      1. 感觉是 exclude 后, 无法再 include 回来
    2. 用例正常执行

6. 结论

  1. 相同操作, 多次执行

    1. 只算执行一次
  2. include 和 exclude 同时存在
    1. exclude 优先级高
  3. 实战建议
    1. 先想清楚, 自己需要什么样的范围

      1. 感觉可以作为注释写在配置里
    2. 先 include, 再 exclude
      1. 简化逻辑, 增强可读性
      2. 只对同一个包 做最多一次 include 和 一次 exclude

ps

  1. 文档和参考

    1. 文档

      1. 官方文档

        1. 老实说就一个页面
        2. 从头拉到尾
          1. 东西是都讲了, 但是只能当个字典来查

            1. 你需要有些基础才行
            2. 但是基础怎么来呢
          2. 好些东西还是没讲
    2. 书籍

      1. testng beginner's guide

        1. 书不错

          1. 13 年的
          2. 没有中文
    3. dtd

      1. testng.xml 的 dtd 文件

        1. 概述

          1. xml 的描述文件
          2. 正确性没问题
            1. 毕竟 testng 就是按照这个来解析的
          3. 注释上也相对清晰
            1. 可以和 官网 或者 参考书 形成互补
          4. 当然看起来有点麻烦
            1. 需用知道 dtd 的语法
        2. 内容

          1. 元素

            1. 元素的意义
            2. 元素的属性
            3. 元素的子元素

Java - Test - TestNG: testng.xml 元素 package的更多相关文章

  1. Java解析和生成XML

    1.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...

  2. Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)

    1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...

  3. Java - Test - TestNG: testng.xml 简介

    1. 概述 简介 testng.xml 中的格式, 元素 2. 背景 testng.xml 概述 测试套件 的配置文件 问题 一下生成了那么多内容 我有点看不懂 一上来就看不懂, 其实很正常, 慢慢说 ...

  4. testng的xml文件说明(TestNG DTD)

    testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...

  5. java 测试框架 TestNG

    Java中print.printf.println的区别 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和prin ...

  6. Java+maven+selenium3+testng 自动化测试环境IDEA

    idea .java环境变量jdk maven安装及环境变量配置这里就不多说了,网上有很多教程 这里我们只检测一下java.maven环境是否安装成功 win+R,运行cmd命令行:mvn -v   ...

  7. Exception in thread "main" java.lang.NoSuchMethodError: org.testng.TestNG.configure(Lorg/testng/CommandLineArgs;)V

    TestNG运行时报以下错误: Exception in thread "main" java.lang.NoSuchMethodError: org.testng.TestNG. ...

  8. jenkins通过maven指定testng的xml文件,并给testng代码传参

    1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...

  9. Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告

    from:http://blog.csdn.net/bwgang/article/details/7865184 1.在Ant中设置如下: <target name="run_test ...

随机推荐

  1. MVC理解(全程白话不拽词)

    我所发的所有博客只为了给想干程序员,但是基础没有或者很差,刚入职场的人 所有的观点不一定准确,我不懂的或者不理解的都会备注出来 先说MVC MVC理解为:M  =  Model  =  数据库表里面每 ...

  2. Qtree1 - 树链剖分

    树剖裸题?(复习练练手) // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; ],size[], ...

  3. Spring Boot整合Dubbo2.x,解决其中遇到的坑

    Dubbo了解 a high-performance, java based open source RPC framework. Dubbo官网 源码 文档 快速知道用法 本地服务 Spring 配 ...

  4. HBuilderX开发app实现自动更新版本

      需求说明:使用MUI+Vue等技术并且通过HBuilderX打包开发移动app,在有版本更新时需要自动提示用户有新版本,并且可以点击下载自动安装. 思路说明: 应用打开时(使用Vue的生命周期mo ...

  5. Java基础--数组(Arrays)

    数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理.本篇博客是对Java基础中的数组进行详细说明. 目录: 数组的概述 一维数组 ...

  6. django学习,captcha图形验证码的使用

    很多网站在登录或者注册的时候都有验证码,让你去输入. 刚好有这么一款插件,可以满足这个功能 首先,先pip install  django-simple-captcha 然后再setting里添加,如 ...

  7. JUC之CountDownLatch和CyclicBarrier的区别 (转)

    CountDownLatch和CyclicBarrier的功能看起来很相似,不易区分,有一种谜之的神秘.本文将通过通俗的例子并结合代码讲解两者的使用方法和区别. CountDownLatch和Cycl ...

  8. 【转载】SpringMVC前台给后台传值的方式

    转自:http://blog.csdn.net/flymoringbird/article/details/53126505 1. 基本数据类型(以int为例,其他类似): Controller代码: ...

  9. Codeforces Round #600 (Div. 2) C - Sweets Eating

    #include<iostream> #include<algorithm> #include<cstring> using namespace std ; typ ...

  10. 解决 IDEA 无法提示导入 java.util.Date 的问题

    之前有一段时间在使用IDEA的时候,发现通过快捷键Alt + Enter导入并没有提示有java.util.Date的包,仅仅只有java.sql.Date的包.于是每次使用都需要通过手写import ...