TestNG环境搭建以及框架初识

简介:
TestNG的英文为 Test Next Generation, 听上去好像下一代 测试框架已经无法正常命名了的样子,哈哈,言归正传,啥是TestNG呢,它是一套测试框架,在原来的Junit框架的思想基础上开发的新一代测试框架,既然这么牛b,那果断弄来试试。本文主要从安装步骤-->第一个测试例子-->再多一点例子-->框架分析-->suite文件的书写-->总结结束。
   安装步骤:
  1. 第一步,当然首先是在你的 java sdk, eclipse ide, system environment,都已经配置好了的情况下进行, 这些本人早就搭建好了,为了体现手把手教学,这里附加上本人的开发环境参数:os: win 8, java_version: 1.7, path: (added), eclipse_version: 4.3.1, 好了,其实只要装好这些就行了,版本么,再说,哈哈,开工
  2. 第二步,去官网download一个TestNG插件,这个 工作在eclipse内完成,点击help->install new software,紧接着填上http://beust.com/eclipse
  然后一路next到finish。好了TestNG插件装上了,为了check一下是否正常工作,新建一个空的工程,然后再新建一个一个TestNG类试一下,如果能够正常建立,那么就成功了,步骤:file->new->Other,会看到
  如果这个看到了,那么okay,恭喜你,可以开工写测试的case了,至此,环境搭建完成。
   第一个测试例子:
  点击src包上右击,新建一个类,->new->class,包名就叫cases吧,类名就叫CaseOne吧不要main方法,然后finish
  写第一个TestNG的带有@Test的方法如图
}
}
}
}
 这样前面的case没通过,后面的当然也不会过,比如将注释掉的那句代码去掉就不会通过执行后面两case了。
  我们还可以对method进行分组,如
  @Test(groups={"group1"})
  这样就不用像方法3那样倚赖写一大串了,只需要一个group的名字便可以了。
  框架分析
  再来看看别的annotation吧!上代码
package cases;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestCase2 {
@BeforeTest
public void setUp(){
System.out.println("*******before********");
}
@BeforeMethod
public void beforeMethod(){
System.out.println("*******beforeMethod********");
}
@AfterMethod
public void afterMethod(){
System.out.println("*******aftermethod********");
}
@Test
public void t1(){
System.out.println("*********t1**********");
}
@Test
public void t2(){
System.out.println("*********t2**********");
}
@BeforeClass
public void beforeClass(){
System.out.println("*****beforeClass*****");
}
@AfterClass
public void afterClass(){
System.out.println("*****afterClass*****");
}
@AfterTest
public void finish(){
System.out.println("*******finish********");
}
}
  运行得到结果如下
  *******before********
  *****beforeClass*****
  *******beforeMethod********
  *********t1**********
  *******aftermethod********
  *******beforeMethod********
  *********t2**********
  *******aftermethod********
  *****afterClass*****
  *******finish********
  PASSED: t1
  PASSED: t2
  ===============================================
  Default test
  Tests run: 2, Failures: 0, Skips: 0
  ===============================================
  这样一来咱们就大概的知道了不同的annotation下的方法的执行顺序了。基本上是@BeforeTest->@BeforeClass->(@BeforeMethod->@Test->@AfterTest)->...重复()内内容...->@AfterClass->@AfterTest.好了,框架基本如下,
  再多一点例子:
  同时建立多个Class,如
  如果全部选中,当然会从上当下的执行,但是万一有些文件我们不想执行呢,比如CaseOne中的method1我们想跳过去,那就得写一个控制文件了,在TestNG中使用xml来控制,在顶级目录下建一个build.xml文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="My Sample Suite">
<test name="First test">
<classes>
<class name="cases.CaseOne"></class>
</classes>
</test>
<test name="Second test">
<classes>
<class name="cases.CaseTwo"></class>
</classes>
</test>
<test name="Third test">
<classes>
<class name="cases.CaseThree"></class>
</classes>
</test>
</suite>
  这是按类写的,当然你可以写的更详细,指定方法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="My Sample Suite">
<test name="First test">
<classes>
<class name="cases.CaseOne"></class>
<methods>
<include name="method1"/>
<include name="method2"/>
</methods>
</classes>
</test>
<test name="Second test">
<classes>
<class name="cases.CaseTwo"></class>
</classes>
</test>
<test name="Third test">
<classes>
<class name="cases.CaseThree"></class>
</classes>
</test>
</suite>
  这样类CaseOne中的第三个方法会掠过去不执行。
  总结:
  在我看来,TestNG是一个非常好用的测试框架,其测试步骤顺序很规范,很强大,当然还有很多东西要去探索。笔者水平较浅,不足之处,大家海涵!

最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
JavaScript 测试技术 Python
低成本、快速造测试数据,这个造数工具我后悔推荐晚了!
没有测试数据,所谓的功能测试和性能测试全都是无米之炊。但我发现一个蛮诡异的事情,就是行业内很少会有人去强调测试数据的重要性,甚至市面上都没有人在做测试数据这门生意。
低成本、快速造测试数据,这个造数工具我后悔推荐晚了!
|
关系型数据库 MySQL Java
【面试题精讲】MySQL-长连接和短连接
【面试题精讲】MySQL-长连接和短连接
|
关系型数据库 MySQL 数据库
阿里云rds简介和如何使用
阿里云关系型数据库服务(RDS)是一种在云端提供的高可用性、可扩展、安全的关系型数据库服务。它支持多种数据库引擎,包括MySQL、PostgreSQL、Oracle等,并提供了丰富的监控、备份、恢复、容灾等功能,帮助企业快速构建和运维高可用、高性能的数据库系统。
3052 0
|
5月前
|
存储 机器学习/深度学习 缓存
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
|
数据采集 监控 测试技术
大型IM稳定性监测实践:手Q客户端性能防劣化系统的建设之路
本文以iOS端为例,详细分享了手 Q 客户端性能防劣化系统从0到1的构建之路,相信对业界和IM开发者们都有较高的借鉴意义。
386 3
|
4月前
|
人工智能 缓存 NoSQL
跨境电商必备:亚马逊API实现海外商品信息实时同步
本方案基于亚马逊官方 API 实现跨境商品信息实时同步,涵盖权限申请、数据采集、存储与应用全流程。提供可复用代码模板与优化策略,助力企业提升运营效率。
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
存储 安全 网络协议
阿里云服务器通用型g7、通用型g8y、通用型g8i实例性能和适用场景对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,在选择云服务器实例规格时,对于需要平衡计算、存储和网络性能的应用场景来说,通用型g7、通用型g8y和通用型g8i实例是许多用户的热门选择。为了帮助大家更好地了解这三款实例的区别,并为选择提供参考,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比。让大家了解一下他们之间的不同,以供参考选择。
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
IDEA查看方法继承关系,如何在Idea中查看某个方法被谁调用、当前方法调用了哪些方法
这篇文章介绍了如何在IntelliJ IDEA中查看方法的继承关系和方法调用链,包括使用鼠标操作和快捷键`Ctrl+Alt+h`来查看一个方法被谁调用以及当前方法调用了哪些方法的具体步骤和界面说明。