ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java - Test - TestNG: testng.xml 元素 class

2019-11-11 18:02:15  阅读:275  来源: 互联网

标签:xml Java package 元素 testng classes exclude include class


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. 配置文件

    <classes>
        <class name="com.test01.Test1"/>
        <class name="com.test02.Test2"/>
        <class name="com.test03.Test3"/>
    </classes>
  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. 配置文件

    <classes>
        <class name="com.test01.Test1">
            <methods>
                <include name="method.*"/>
                <exclude name="method.*2"/>
            </methods>
        </class>
    </classes>
  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 还没考虑过呢

标签:xml,Java,package,元素,testng,classes,exclude,include,class
来源: https://www.cnblogs.com/xy14/p/11837186.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有