测试技术之测试利器TestNG
白羽 2018-05-22 来源 :网络 阅读 1085 评论 0

摘要:本文主要讲述了测试技术之测试利器TestNG,TestNG是一款脱胎于JUnit和NUnit的测试框架,借鉴了后者的设计思想,在此基础上又引入了新的功能,比如分组测试、依赖测试、多线程测试等。TestNG除了支持单元测试外,还可以用来做集成测试、功能测试、端到端测试等等,而junit只是用来单元测试。希望本文对大家学测试技术有所帮助。



一、 青出于蓝而胜于蓝

TestNG是一款脱胎于JUnit和NUnit的测试框架,借鉴了后者的设计思想,在此基础上又引入了新的功能,比如分组测试、依赖测试、多线程测试等。

TestNG除了支持单元测试外,还可以用来做集成测试、功能测试、端到端测试等等,而junit只是用来单元测试。


二、 TestNG优于JUnit的设计详解


1.分组测试

分组测试可以很方便让你去指定你需要测试的某一批次的测试用例,我们可以使用@Test注解里的groups属性为某个测试方法指定一个或多个group,示例代码如下

public class TestExample {
@Test(groups = "group1")
public void test1(){
Assert.assertEquals(1+1,2);
}
@Test(groups = "group1")
public void test2(){
Assert.assertEquals(1+2,3);
}
@Test(groups = "group2")
public void test3(){
Assert.assertEquals(1+3,4);
}
}

另外我们还需要建立一个testng.xml文件,去指定要运行的分组测试。


2.参数化测试


所谓参数化测试就是为测试用例提供参数数据,示例如下:

@Test(dataProvider = "data")
public void hello(String name){
Assert.assertEquals(name,"world");
}
@DataProvider(name = "data")
public Object[][] data(){
return new Object[][]{{"world"}};
}


3.依赖测试

当两个测试用例之间存在依赖关系,TestNG支持你使用注解l指定依赖关系。

@Test
public void insert(){
System.out.println("insert data");
}
@Test(dependsOnMethods = "insert")
public void query(){
System.out.println("query data");
}

上面的代码,如果query方法依赖的insert方法执行失败了,则query方法则将被跳过。如果insert失败了,还想要执行query方法的话,则可以在@Test中添加

alwaysRun = true的属性

需要说明的是这个用法不能用于单元测试,单元测试要求用例之间是隔离的,这也是为什么JUnit没有提供这个功能的原因。在集成测试等场景中需要的话则可以使用。


4.多线程测试

并发测试一直是测试的难点,TestNG提供了一套多线程执行测试用例的的方案,给并发测试带来了很大的方便。

@Test(threadPoolSize = 5,invocationCount = 30,timeOut = 100)
public void multiThreadTest(){
Long id = Thread.currentThread().getId();
System.out.println("thread id: " + id);
}

threadPoolSize 指线程数量,invocationCount表示测试用例调用的次数,timeOut表示超时阀值


5.按优先级顺序测试

@Test 提供了一个很有用的priority属性来指定测试用例执行的优先级,数值越低,优先级越高。这个在测试流程的时候很有用!

public class PriorityTest {
@Test(priority = 1)
public void priority1(){
System.out.println("登录");
}
@Test(priority = 2)
public void priority2(){
System.out.println("首页");
}
@Test(priority = 0)
public void priority0(){
System.out.println("注册");
}
}

6.更丰富的注解

 

三、拥抱TestNG

从上面的介绍可以看到,TestNG相比JUnit提供了更全面的功能,更适用于互联网环境下的各个测试场景。而JUnit的定位仅仅是单元测试! 因此建议TestNG 作为 Java 项目的主要单元测试框架!



 本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道!



本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程