Java - Test - TestNG: testng.xml 元素 package
1. 概述
- 简介 package 元素
- packages
- package
- exclude
- include
2. 背景
准备
- 自动生成了 testng.xml 文件
- 已经基本了解了 testng.xml 的结构
问题
- 如何约束测试范围
- 假设我有很多的测试用例
- 我想一次执行所有
- 或者一次执行一部分
- 假设我有很多的测试用例
- 如何约束测试范围
3. 环境
ide
- idea
- 2018.2
- idea
配置文件
- testng.xml
测试包结构
- com.test01.Test1
- com.test02.Test2
- com.test03.Test3
约定
- 配置文件, 我只截取 suite 以下的部分
4. 场景
1. 场景1: 我想执行所有测试类
概述
- 执行所有测试类
配置文件
<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>
解释
packages
概述
- 包的根元素
本质
- 就是个 容器类元素
- 告诉 testng, 这下面都是 package
- 感觉这么设计, 可能是为了效率吧
- package, class, group 执行的机制有不同
- 来回切换损失性能
- 所以尽量集中到一起
- 就是个 容器类元素
注意
- 一个 test 只能有一个
- 多了会报错
- 一个 test 只能有一个
package
概述
- 包元素
本质
- 指定需要执行的包
属性
- name
- 测试类的名字
- name
其他
- 使用
- 需要几个包, 直接写几个包就行了
- 使用
2. 场景2: 要执行的包有点多, 我能不能偷个懒
概述
- 执行所有测试类
- 想偷懒
配置文件
<suite name="All Test Suite">
<test verbose="2" preserve-order="true" name="test 1">
<packages>
<package name="com.*" />
</packages>
</test>
</suite>
解释
- package
概述
- 这里使用了 正则
com.*
- 正则
- 用 正则 匹配了 包名
- 注意
- testng 没有 通配符
- 没有 wildcard
- testng 没有 通配符
- 正则
- package
3. 场景3: 要执行的包有点多, 但我又不想执行所有的包
概述
- 执行大部分测试
- 但有那么些类, 我又不想执行
配置文件
<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>
解释
- exclude
- 概述
- 黑名单机制
- 名单里的 包, 不会再执行
- 黑名单机制
- 概述
- exclude
4. 场景4: 要执行的包有点多, 但我又不想执行所有的包
概述
- 执行少部分测试
- 好像和上次又有那么点不同
- 执行少部分测试
配置文件
<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>
解释
- include
- 概述
- 白名单机制
- 只会执行 白名单里 的包
- 正则
- 白名单机制
- include 和 exclude 都支持正则
- testng 不支持通配符
- wildcard
- 概述
- 其他
- 在同一个 package 下, 最好不要和 exclude 混用
- include 和 exclude 都是支持正则的
- include
5. 一些问题
- 概述
- 想到的一些问题
1. 问题1: 一个类同时出现在多个 package标签 里, 执行几次
场景
- 同一个 包
- 出现在了 多个 package 元素里
结果
- 包里的测试方法, 只执行一次
2. 问题2: 连续两次 include 相同内容
场景
- 同一个类, include 两次
结果
- 包里的测试方法, 只执行一次
3. 问题3: 连续两次 exclude 相同内容
场景
- 同一个类, exclude 两次
结果
- 包里方法不执行
- 测试正常执行
4. 问题4: 先 include 再 exclude
场景
- 同一个包, 先 include 再 exclude
结果
- 包被 exclude
- 用例正常执行
5. 问题5: 先 exclude 再 include
场景
- 同一个包, 先 exclude 再 include
结果
- 包被 exclude
- 感觉是 exclude 后, 无法再 include 回来
- 用例正常执行
- 包被 exclude
6. 结论
- 相同操作, 多次执行
- 只算执行一次
- include 和 exclude 同时存在
- exclude 优先级高
- 实战建议
- 先想清楚, 自己需要什么样的范围
- 感觉可以作为注释写在配置里
- 先 include, 再 exclude
- 简化逻辑, 增强可读性
- 只对同一个包 做最多一次 include 和 一次 exclude
- 先想清楚, 自己需要什么样的范围
ps
- 文档和参考
文档
- 官方文档
- 老实说就一个页面
- 从头拉到尾
- 东西是都讲了, 但是只能当个字典来查
- 你需要有些基础才行
- 但是基础怎么来呢
- 好些东西还是没讲
- 东西是都讲了, 但是只能当个字典来查
- 官方文档
书籍
- testng beginner's guide
- 书不错
- 13 年的
- 没有中文
- 书不错
- testng beginner's guide
dtd
- testng.xml 的 dtd 文件
概述
- xml 的描述文件
- 正确性没问题
- 毕竟 testng 就是按照这个来解析的
- 注释上也相对清晰
- 可以和 官网 或者 参考书 形成互补
- 当然看起来有点麻烦
- 需用知道 dtd 的语法
内容
- 元素
- 元素的意义
- 元素的属性
- 元素的子元素
- 元素
- testng.xml 的 dtd 文件
Java - Test - TestNG: testng.xml 元素 package的更多相关文章
- Java解析和生成XML
1.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- Java - Test - TestNG: testng.xml 简介
1. 概述 简介 testng.xml 中的格式, 元素 2. 背景 testng.xml 概述 测试套件 的配置文件 问题 一下生成了那么多内容 我有点看不懂 一上来就看不懂, 其实很正常, 慢慢说 ...
- testng的xml文件说明(TestNG DTD)
testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...
- java 测试框架 TestNG
Java中print.printf.println的区别 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和prin ...
- Java+maven+selenium3+testng 自动化测试环境IDEA
idea .java环境变量jdk maven安装及环境变量配置这里就不多说了,网上有很多教程 这里我们只检测一下java.maven环境是否安装成功 win+R,运行cmd命令行:mvn -v ...
- 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. ...
- jenkins通过maven指定testng的xml文件,并给testng代码传参
1.jenkins设置参数化构建,设置要传的参数名和值 2.指定testng的xml文件,在jenkins的输入以下 3.在pom.xml文件分别引用jenkins的参数,设置两个property & ...
- Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告
from:http://blog.csdn.net/bwgang/article/details/7865184 1.在Ant中设置如下: <target name="run_test ...
随机推荐
- VScode usage
Common settings editor.minimap.enabled //close the preview workbench.editor.show tabs // show f ...
- 【Python】表白程序
程序链接:https://www.lanzous.com/i8xj5mh # 打包操作 # 安装pyinstaller # cmd输入 pip install pyinstaller # shift ...
- [十二省联考2019] 异或粽子 - 可持久化Trie,堆
求 \(n\) 元数列的 \(k\) 个不同的子区间使得各个子区间异或和之和最大. Solution (差点又看错题了) 做个前缀和,于是转化成求序列异或和最大的 \(k\) 个数对 建一棵可持久化 ...
- try_except_finally
blog: python中的try/except/else/finally python文档:错误和异常 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出 ...
- 网页出现横向滚动条的原因可能是使用bootstrap不当引起
Bootstrap的栅格布局超级方便我们写网页.但是在不是全体配合使用的情况下,会出现横向滚动条的现象. 什么叫不是配合使用的情况呢? >>一种情况是:你使用了row作为你的第一层父元素: ...
- Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
问题描述 将项目挂载到 Myeclipse 的 tomcat 上,启动 tomcat ,报错“Initialization of bean failed; nested exception is ja ...
- ubuntu 安装 lnmp 参考
暂时参考 https://blog.csdn.net/weixin_36025897/article/details/81417458 https://www.jianshu.com/p/37cacd ...
- C++-POJ2955-Brackets[DP]
题意就是,找出最长合法子括号序列 容易想到设f[l][r]为l~r的最长合法子括号序列的长度 然后从短的状态往长的状态枚举,不断更新答案就可以了 //#include<bits/stdc++.h ...
- AcWing 532. 货币系统
#include <cstring> #include <iostream> #include <algorithm> using namespace std; ; ...
- 删除表 (truncate 、delete 、drop)
来源:http://www.cnblogs.com/dieyaxianju/p/7238936.html 删除表中内容分为三种情况. 1.删除表中所有数据,但保留表结构(可用以下两个语句): trun ...