博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你必须要掌握的测试利器TestNG
阅读量:7143 次
发布时间:2019-06-28

本文共 2259 字,大约阅读时间需要 7 分钟。

是时候告别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指定依赖关系。

@Testpublic 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.更丰富的注解

image.png

三、拥抱TestNG

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

更多内容欢迎关注个人微信公众号,一起成长!

1240

转载于:https://www.cnblogs.com/jishujinjie/p/7294881.html

你可能感兴趣的文章
重大里程碑:顶级科学家达成23条人工智能发展原则!
查看>>
esxi嵌套华为Fusioncomputer安装VRM几个关键步骤。
查看>>
/etc/init.d/mysqld:line 260:my_print_defaults:command not found
查看>>
DNS设置引起的登录延迟
查看>>
*** $CI =& get_instance() 用法:关于CodeIgniter中get_instance() 函数
查看>>
简单的ISIS协议的路由重分发实验详解
查看>>
Python模块学习--shutil和hashlib和json
查看>>
Linux防火墙iptables学习笔记(一)入门要领
查看>>
xshell 秘钥配对
查看>>
saltstack之SLS文件
查看>>
Redhat linux下cvs的安装配置
查看>>
cxgrid合并值相同的某列
查看>>
增量备份和差异备份的区别
查看>>
纯JS操作获取桌面路径方法
查看>>
thinkphp数据库添加表单提交的数据
查看>>
Hibernate事务属性
查看>>
OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
查看>>
反编译工具jad简单用法
查看>>
无法获取网关MAC地址表/radware备机流量——在不断的应急中提高
查看>>
iOS上使用自定义ttf字体
查看>>