1. 概述

  1. class 相关的元素

    1. classes
    2. class
    3. methods
    4. exclude
    5. include

2. 背景

  1. 准备

    1. 了解了 package 及其子元素
  2. 问题

    1. 我只想测某几个特定的类
    2. 我还想对 类 的方法做过滤

3. 环境

  1. ide

    1. idea

      1. 2018.2
  2. 配置文件

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

    1. com.test01.Test1

      1. method101
      2. method102
    2. com.test02.Test2
      1. method201
      2. method202
    3. com.test03.Test3
      1. method301
      2. method302
  4. 约定

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

4. 场景

1. 场景1: 执行某些类

  1. 概述

    1. 执行某些测试类

      1. 当然, 这个使用 package 配合 include 也能实现
  2. 配置文件

    <test name="Timed Test">
    <classes>
    <class name="com.test01.Test1"/>
    <class name="com.test02.Test2"/>
    <class name="com.test03.Test3"/>
    </classes>
    </test>
  3. 解释

    1. classes

      1. 概述

        1. 类的根元素
      2. 本质

        1. 容器元素

          1. 本身没什么属性
          2. 作为 class 元素的父元素
      3. 注意

        1. 一个 test 里只能有一个

          1. 多了会报错
    2. class

      1. 概述

        1. 类元素
      2. 本质

        1. 测试类信息
      3. 属性

        1. name

          1. 类名称
        2. 其他
          1. 后面还有, 后面再说
  4. 疑问

    1. 问题1: 我想一次测好多 class

      1. 方案1

        1. 使用 package
      2. 方案2
        1. 用一个个的 class 元素
        2. class 的 name 属性不支持正则
          1. 所以...
          2. 感觉有点小不合理
          3. 好了, 我们说下一个问题

2. 场景2: 我想执行测试类里的某些特定方法

  1. 概述

    1. 执行某些测试类
    2. 精确指定 方法
  2. 配置文件

    <test name="Timed Test">
    <classes>
    <class name="com.test01.Test1">
    <methods>
    <include name="method.*"/>
    <exclude name="method.*2"/>
    </methods>
    </class>
    </classes>
    </test>
  3. 解释

    1. methods

      1. 概述

        1. 方法的根元素
        2. 但并没有 方法子元素
      2. 本质

        1. 一个容器
    2. include & exclude

      1. 概述

        1. 这个在 package 里说过, 就不说了
        2. 他们当然支持正则

5. 问题

1. 问题1: 一个类同时出现在 多个class元素里

  1. 场景

    1. 同一个 类
    2. 在 class 出现多次
  2. 结果

    1. 只执行一次

2. 问题2: 方法 include 与 exclude

  1. 场景

    1. 同一个 方法
    2. 被 include 和 exclude 多次操控
  2. 结果

    1. 同 package

      1. 相同操作, 最多执行一次
      2. include 和 exclude 都有的时候, exclude 优先级高

3. 问题3: class 与 package 冲突

  1. 场景

    1. 类被 package exclude 了
    2. 类被 classes 包含了
  2. 结果

    1. 先 package 后 class

      1. 正常执行
    2. 先 classes 后 packages

      1. 会出问题

        1. packages 必须在 classes 前面
        2. 这些元素, 一个 test 只能有一个
    3. 如果同时 include

      1. 正常执行
      2. 不会重复

6. 结论

  1. 一个 suite 里, 可以有 多个 test
  2. 一个 test 里, 只能有一个 groups, packages, classes
    1. 而且得有顺序
  3. groups, packages, classes 里
    1. 元素的 include 和 exclude 还是很好判断的
    2. 但是跨元素的话
      1. 前面元素的 exclude 可能会失效
      2. 多个元素的 include 不会导致测试多次执行

ps

  1. 这个跨元素的一些矛盾操作, 感觉需要考虑一下

    1. 跨 test 还没考虑过呢

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

  1. Java解析和生成XML

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

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

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

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

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

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

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

  5. java 测试框架 TestNG

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

  6. 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. ...

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

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

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

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

  9. testNG jar包启动找不到org.testng.TestNG

    主要是因为打包时依赖的jar包没有打入,网上有很多需要将对应的jar单独拷贝出来然后通过classpath引用启动,但是感觉这个就是个无底洞.拷贝了这么多个包最后还是说找不到ObjectId 启动命令 ...

  10. java 解析并生成 XML

    在 java 中使用 Dom4j 解析 XML 对 XML 文件的解析,通常使用的是 Dom4j 和 jdom 作为XML解析工具. 在此只介绍下 Dom4j 对 XML 文件的解析使用方法. 1. ...

随机推荐

  1. linux - mysql 异常:MySQL Daemon failed to start.

    报错内容 MySQL Daemon failed to start. 如果直接输入 mysql -root -p 登陆会出现 [mysql]ERROR 2002 (HY000): Can't conn ...

  2. new Vue发生了什么(五)

    从入口代码开始分析,我们先来分析 new Vue 背后发生了哪些事情.我们都知道,new 关键字在 Javascript 语言中代表实例化是一个对象,而 Vue 实际上是一个类,类在 Javascri ...

  3. 2020牛客寒假算法基础集训营6 I.导航系统 (最小生成树)

    https://ac.nowcoder.com/acm/contest/3007/I 题中给定的图必定是一棵树 容易发现,如果将输入的N(N-1)个距离看做N(N-1)条无向边的话,那么如果数据合法, ...

  4. Qt VS Tools插件官方下载及安装

    下载 官方下载地址:https://download.qt.io/development_releases/vsaddin/(国外网站直接打开超级慢) 找到对应的VS版本下载 安装 下载完成后安装,打 ...

  5. 问题解决:局域网内,为啥别人ping不到我的IP

    试着在本地搭建一个测试环境,成功后却发现同一局域网的同事根本访问不了,他们ping不到我的IP,这可咋整! 询问度娘后,我的问题得到了,以下是我的总结,如果解决不了你的问题,还请继续百度. 方法一:关 ...

  6. [一本通学习笔记] AC自动机

    AC自动机可以看作是在Trie树上建立了fail指针,在这里可以看作fail链.如果u的fail链指向v,那么v的对应串一定是u对应串在所给定字符串集合的后缀集合中的最长的后缀. 我们考虑一下如何实现 ...

  7. flask入门(一)

    flask是一个轻量级的框架,据说跟django跟比是真的轻. 首先要先配置一个虚拟环境,flask项目需要在那个虚拟环境里运行,这里需要用的venv库实在python3里的标准库,不过有的linux ...

  8. SpringCloud大白话之服务注册中心

    SpringCloud-Eureka白话说明 eureka.client.register-with-eureka 属性表示是否将自己注册到Eureka Server, 默认为true. 由于当前应用 ...

  9. 搭建Hexo实现个人网站详细教程

    全网最全小白搭建Hexo+Gitee/Coding/Github 全网最全小白搭建Hexo+Gitee/Coding/Github 本站内容已全部转移到https://www.myyuns.ltd,具 ...

  10. jvm(5):类加载机制

    类加载时机 Java虚拟机规范并没有强制约束类加载过程的第一个阶段时机,但对初始化阶段由严格规定5中必须立即对类进行初始化的情况: 遇到new.getstatic.putstatic或invokest ...