当前位置:龙泉人才网 - 公司招聘 -

深圳软件测试(Java接口自动化之TestNG单元测试框架)

  • 公司招聘
  • 2023-08-28 22:40
  • 龙泉小编





上一篇Java接口自动化系列文章:Java接口自动化之log4j日志框架,主要介绍log4j日志介绍、日志三大组成部分及日志实战。


以下主要介绍TestNG的简介、@Test注解及其属性。


01

TestNG简介


1 TestNG介绍

TestNG 是java的一个单元测试框架,TestNG吸取了Junit框架的思想,形成了更强大的集成测试框架。


2 TestNG特点

  • 支持注解;
  • 灵活的运行配置;
  • 支持多线程、忽略、异常、参数化等测试。


3 加入TestNG依赖

在maven项目的pom.xml中,添加内容如下:

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0</version>
</dependency>


02

@Test注解及常用属性


@@Test是TestNG 最基本的注解,用来将方法标注为测试方法。接下来会介绍@Test注解的常用属性

@Test是TestNG 最基本的注解,用来将方法标注为测试方法。接下来会介绍@Test注解的常用属性。


1 enable 测试方法是否执行

enable默认是 true , 表示执行这个方法,如果设置为 false ,则在运行时不会执行这个测试方法。

import org.testng.annotations.Test;
public class TestDemo {
@Test(enabled = true)
public void testDemo1(){
System.out.println("这是testDemo1");
}
@Test(enabled = false)
public void testDemo2(){
System.out.println("这是testDemo2");
}
}


运行结果为:

从上图可以看出,enabled为true的方法执行了,enabled为false的方法未执行。


2 dependsOnMethods 依赖方法

在依赖的方法运行完成之后运行当前方法,如果依赖方法测试不通过,那么当前方法也不会继续运行了。

依赖的方法可以有多个,格式为:@Test(dependsOnMethods = { "method1" , “method2” })。

修改testDemo1代码,运行时抛出异常,代码如下:

import org.testng.annotations.Test;
public class TestDemo {
@Test()
public void testDemo1(){
int i=10;
System.out.println(i/0);
System.out.println("这是testDemo1");
}
@Test(dependsOnMethods = {"testDemo1"})
public void testDemo2(){
System.out.println("这是testDemo2");
}
}


运行结果为:

从上图可以看出testDemo1方法运行失败后,testDemo2方法被忽略运行了。


3 groups 分组

在运行时,一个组的方法会一起运行,然后再运行下一个组的方法;

格式为:@Test(groups = "groupName")。

import org.testng.annotations.Test;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.AfterGroups;
public class TestDemo {
@BeforeGroups(groups = "server")
public void beforeGroupsOnServer() {
System.out.println("服务端组运行前执行的方法。。。");
}
@BeforeGroups(groups = "client")
public void beforeGroupsOnClient() {
System.out.println("客户端组运行前执行的方法。。。");
}
@Test(groups = "server")
public void test1() {
System.out.println("server test1 run ....");
}
@Test(groups = "server")
public void test2() {
System.out.println("server test2 run ....");
}
@Test(groups = "client")
public void test3() {
System.out.println("client test3 run ....");
}
@Test(groups = "client")
public void test4() {
System.out.println("client test4 run ....");
}
@AfterGroups(groups = "server")
public void afterGroupsOnServer() {
System.out.println("服务端组运行之后执行的方法。。。");
}
@AfterGroups(groups = "client")
public void afterGroupsOnClient() {
System.out.println("客户端组运行之后执行的方法。。。");
}
}


运行结果为:

服务端组运行前执行的方法。。。
server test1 run ....
server test2 run ....
服务端组运行之后执行的方法。。。
客户端组运行前执行的方法。。。
client test3 run ....
client test4 run ....
客户端组运行之后执行的方法。。。
===============================================
Default Suite
Total tests run: 4, Failures: 0, Skips: 0


4 timeOut 超时属性

格式:@Test(timeOut = 3000) 设置超时时间,单位为毫秒。


import org.testng.annotations.Test;
public class TestDemo {
// 单位为毫秒值,3秒内没有响应,就运行失败,反之成功
@Test(timeOut = 3000)
public void testSuccess() throws InterruptedException {
Thread.sleep(2000);
}
// 单位为毫秒值,2秒内没有响应,就运行失败,反之成功
@Test(timeOut = 2000)
public void testFail() throws InterruptedException {
Thread.sleep(3000);
}
}


运行结果为:

从上图可以看出,testFail方法因为超时运行失败。


5 多线程测试

格式:@Test(invocationCount = 10,threadPoolSize = 3)。

参数说明:

invocationCount:线程调用的次数,默认1次。

threadPoolSize:线程池,需与invocationCount组合使用。


接下来编写一个方法,定义3个线程,执行方法10次。

import org.testng.annotations.Test;
public class TestDemo {
@Test(invocationCount = 10,threadPoolSize = 3)
public void testDemo(){
System.out.println("---------");
System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
}
}


运行结果为:

[TestNG] Running:

---------
---------
Thread Id : 13
---------
Thread Id : 12
Thread Id : 14
---------
Thread Id : 13
---------
Thread Id : 14
---------
Thread Id : 12

---------
Thread Id : 12
---------
Thread Id : 13
---------
Thread Id : 14
---------
Thread Id : 12
===============================================
Default Suite
Total tests run: 10, Failures: 0, Skips: 0
===============================================



(完)



我是CoCo,计算机科学与技术专业,深漂大厂互联网民工(女),坐标深圳。5年工作经验,3年持续输出技术文。ITester软件测试小栈(ID:ITestingA)号主,Boss直聘好文社区签约作者,腾讯云社区优质创作者。专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。


喜欢记得星标置顶,让我们一起守护成长

免责声明:本文内容来源于网络或用户投稿,龙泉人才网仅提供信息存储空间服务,不承担相关法律责任。若收录文章侵犯到您的权益/违法违规的内容,可请联系我们删除。
https://www.lqrc.cn/a/gongsi/65751.html

  • 关注微信
下一篇:暂无

猜你喜欢

微信公众号