Java - Test - TestNG: testng.xml 元素 class
1. 概述
- class 相关的元素
- classes
- class
- methods
- exclude
- include
2. 背景
准备
- 了解了 package 及其子元素
问题
- 我只想测某几个特定的类
- 我还想对 类 的方法做过滤
3. 环境
ide
- idea
- 2018.2
- idea
配置文件
- testng.xml
测试包结构
- com.test01.Test1
- method101
- method102
- com.test02.Test2
- method201
- method202
- com.test03.Test3
- method301
- method302
- com.test01.Test1
约定
- 配置文件, 我只截取 suite 以下的部分
4. 场景
1. 场景1: 执行某些类
概述
- 执行某些测试类
- 当然, 这个使用 package 配合 include 也能实现
- 执行某些测试类
配置文件
<test name="Timed Test">
<classes>
<class name="com.test01.Test1"/>
<class name="com.test02.Test2"/>
<class name="com.test03.Test3"/>
</classes>
</test>
解释
classes
概述
- 类的根元素
本质
- 容器元素
- 本身没什么属性
- 作为 class 元素的父元素
- 容器元素
注意
- 一个 test 里只能有一个
- 多了会报错
- 一个 test 里只能有一个
class
概述
- 类元素
本质
- 测试类信息
属性
- name
- 类名称
- 其他
- 后面还有, 后面再说
- name
疑问
- 问题1: 我想一次测好多 class
- 方案1
- 使用 package
- 方案2
- 用一个个的 class 元素
- class 的 name 属性不支持正则
- 所以...
- 感觉有点小不合理
- 好了, 我们说下一个问题
- 方案1
- 问题1: 我想一次测好多 class
2. 场景2: 我想执行测试类里的某些特定方法
概述
- 执行某些测试类
- 精确指定 方法
配置文件
<test name="Timed Test">
<classes>
<class name="com.test01.Test1">
<methods>
<include name="method.*"/>
<exclude name="method.*2"/>
</methods>
</class>
</classes>
</test>
解释
methods
概述
- 方法的根元素
- 但并没有 方法子元素
本质
- 一个容器
include & exclude
- 概述
- 这个在 package 里说过, 就不说了
- 他们当然支持正则
- 概述
5. 问题
1. 问题1: 一个类同时出现在 多个class元素里
场景
- 同一个 类
- 在 class 出现多次
结果
- 只执行一次
2. 问题2: 方法 include 与 exclude
场景
- 同一个 方法
- 被 include 和 exclude 多次操控
结果
- 同 package
- 相同操作, 最多执行一次
- include 和 exclude 都有的时候, exclude 优先级高
- 同 package
3. 问题3: class 与 package 冲突
场景
- 类被 package exclude 了
- 类被 classes 包含了
结果
先 package 后 class
- 正常执行
先 classes 后 packages
- 会出问题
- packages 必须在 classes 前面
- 这些元素, 一个 test 只能有一个
- 会出问题
如果同时 include
- 正常执行
- 不会重复
6. 结论
- 一个 suite 里, 可以有 多个 test
- 一个 test 里, 只能有一个 groups, packages, classes
- 而且得有顺序
- groups, packages, classes 里
- 元素的 include 和 exclude 还是很好判断的
- 但是跨元素的话
- 前面元素的 exclude 可能会失效
- 多个元素的 include 不会导致测试多次执行
ps
- 这个跨元素的一些矛盾操作, 感觉需要考虑一下
- 跨 test 还没考虑过呢
Java - Test - TestNG: testng.xml 元素 class的更多相关文章
- Java解析和生成XML
1.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
- Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)
1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...
- testng的xml文件说明(TestNG DTD)
testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单.,比如如下的一些特点: 1.通过注释来管理测试 2.多线程并发执行测试,且是安全的 3.支持数据驱动测试 4 ...
- Java+maven+selenium3+testng 自动化测试环境IDEA
idea .java环境变量jdk maven安装及环境变量配置这里就不多说了,网上有很多教程 这里我们只检测一下java.maven环境是否安装成功 win+R,运行cmd命令行:mvn -v ...
- java 测试框架 TestNG
Java中print.printf.println的区别 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和prin ...
- 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 ...
- testNG jar包启动找不到org.testng.TestNG
主要是因为打包时依赖的jar包没有打入,网上有很多需要将对应的jar单独拷贝出来然后通过classpath引用启动,但是感觉这个就是个无底洞.拷贝了这么多个包最后还是说找不到ObjectId 启动命令 ...
- java 解析并生成 XML
在 java 中使用 Dom4j 解析 XML 对 XML 文件的解析,通常使用的是 Dom4j 和 jdom 作为XML解析工具. 在此只介绍下 Dom4j 对 XML 文件的解析使用方法. 1. ...
随机推荐
- [USACO12FEB] 附近的牛 Nearby Cows - 树形dp,容斥
给你一棵 \(n\) 个点的树,点带权,对于每个节点求出距离它不超过 \(k\) 的所有节点权值和 \(m_i\) 随便定一个根,设\(f[i][j]\)表示只考虑子树,距离为\(j\)的权值和,\( ...
- JFinalSwagger插件
个人博客 地址:http://www.wenhaofan.com/article/20190304101839 jfinal使用swagger的极简插件 码云地址:https://gitee.com/ ...
- Activiti工作流学习之SpringBoot整合Activiti5.22.0实现在线设计器(二)
一.概述 网上有很多关于Eclipse.IDEA等IDE插件通过拖拽的方式来画工作流程图,个人觉得还是不够好,所以花点时间研究了一下Activiti在线设计器,并与SpringBoot整合. 二.实现 ...
- PTA-1003 我要通过!
1003 我要通过!https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192 “答案正确”是自动判题系 ...
- vue学习指南:第十四篇(详细) - Vue的 路由 第四篇 ( 路由的导航守卫 )
导航守卫 一.全局导航守卫 1. 全局导航守卫,把方法给 router,只要路由发生改变跳转都会触发这个函数 2. 每个路由 都有一个 meta 3. 全局导航守卫分两种: 1. 全局前置导航守卫:路 ...
- python面试的100题(17)
内存管理与垃圾回收机制 48.哪些操作会导致Python内存溢出,怎么处理? 内存溢出:你申请了10个字节的内存,但写入了大于10个字节的数据会导致内存溢出 内存溢出原因:1.内存中加载的数据量过于庞 ...
- 全排列(dfs-有重复数字)
给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列.例如:S = "1312", 输出为: 1123 1132 1213 1231 131 ...
- 计蒜客 - A1633.蒜头君的数轴
我感觉出的很好的一道题,首先不难想到(其实我刚开始没想到),加点的个数就是找已有点两两形成区间的gcd,那么问题就出在了复杂度上,每次循环哪个区间不要复杂度过高,所以运用正反两次前缀和(?好像不能这么 ...
- 搭建Hexo实现个人网站详细教程
全网最全小白搭建Hexo+Gitee/Coding/Github 全网最全小白搭建Hexo+Gitee/Coding/Github 本站内容已全部转移到https://www.myyuns.ltd,具 ...
- Mybatis学习笔记——输入参数parameterType、Mybatis调用存储过程
输入参数:parameterType(两种取值符号) 1.类型为简单类型 区别: (1) #{可以为任意值} ${vaue}--->标识符只能是value (2) ...