Java接口自动化之TestNG单元测试框架(一)

Java接口自动化之TestNG单元测试框架(一)点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。上一篇Java接口自动

欢迎大家来到IT世界,在知识的湖畔探索吧!

Java接口自动化之TestNG单元测试框架(一)

点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。

上一篇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”);
}
}

运行结果为:

Java接口自动化之TestNG单元测试框架(一)

从上图可以看出,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”);
}
}

运行结果为:

Java接口自动化之TestNG单元测试框架(一)

从上图可以看出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);
}
}

运行结果为:

Java接口自动化之TestNG单元测试框架(一)

从上图可以看出,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://itzsg.com/49691.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信