原文:https://www.cnblogs.com/starstarstar/p/11305733.html

注解@Test标签

package com.course.testng;

import org.testng.annotations.Test;

public class BasicAnnotation {
@Test
public void testCase01(){
System.out.println("ddd");
}
}

@Test:是最基本的注解,用来把方法标记为测试的一部分,是最基本的注解

@BeforeTest 在<test> 标记内的类所有的测试方法之前运行

@AfterTest 在<test>标记内的类所有的测试方式之后运行

注解@BeforeMethod和@AfterMethod标签

@BeforeMethod
public void beforeMethod(){
System.out.println("在测试方法之前运行");
} @AfterMethod
public void afterMethod(){
System.out.println("在测试方法之后");
}

@BeforeMethod 在每个方法之前运行;@AfterMethod 在每个方法之后运行

@BeforeMethod 在每一个测试方式运行之前运行

@AfterMehod 在每一个测试方法之后运行

注解@BeforeClass和@AfterClass标签

@BeforeClass
public void beforeClass(){
System.out.println("在类之前");
}
@AfterClass
public void afterClass(){
System.out.println("在类运行之后");
}

@BeforeClass 在类之前运行;@AfterClass 在类之后运行

@BeforeClass 在当时类所有测试方法之前运行

@AfterClass 在当前类所有测试方法之后运行

注解@BeforeSuit和@AfterSuit标签

@BeforeSuite
public void beforeSuite(){
System.out.println("在套件suit之前");
}
@AfterSuite
public void afterSuite(){
System.out.println("在套件suit之后");
}  

@BeforeSuite 在此套件所有的测试方式之前运行,

@AfterSuite 在此套件所有的测试方式之后运行

注解运行顺序总结:

package com.course.testng;

import org.testng.annotations.*;

public class BasicAnnotation {

    @Test
public void testCase01(){
System.out.println("ddd");
} @Test
public void testCase02(){
System.out.println("ddd2");
} @BeforeMethod
public void beforeMethod(){
System.out.println("在测试方法之前运行");
} @AfterMethod
public void afterMethod(){
System.out.println("在测试方法之后");
} @BeforeClass
public void beforeClass(){
System.out.println("在类之前");
}
@AfterClass
public void afterClass(){
System.out.println("在类运行之后");
} @BeforeSuite
public void beforeSuite(){
System.out.println("在套件suit之前");
}
@AfterSuite
public void afterSuite(){
System.out.println("在套件suit之后");
}
}

运行结果:beforesuit->beforeclass->beforemethod->方法1->aftermethod->beforemethod->方法2->aftermethod->afterclass->aftersuit

在套件suit之前
在类之前
在测试方法之前运行
ddd
在测试方法之后
在测试方法之前运行
ddd2
在测试方法之后
在类运行之后
在套件suit之后

忽略测试

@Test(enabled = false)
public void testCase02(){
System.out.println("ddd2");
}

在标签@Test后面加关键字enabled = false,该方法就不被执行了

组测试

组测试:方法分组

@Test(groups = "server")
public void testCase02() {
System.out.println("server端测试方法1");
} @Test(groups = "server")
public void testCase03() {
System.out.println("server端测试2");
} @BeforeGroups("server")
public void beforeGroups() {
System.out.println("***这个是组运行之前的方法");
} @AfterGroups("server")
public void afterGroups() {
System.out.println("这个是组运行之后的方法***");
}
  1. 在注解@Test后加groups="组名" ,一个组的方法,都要加上
  2. 如果需要@BeforeGroups和@AfterGroups这两个注解,要在这两个注解后,加上指定的组名("组名")
  1. @BeforeGroups 在当前组所有测试方式运行之前运行
  2. @AfterGroups 在当前组所有测试方式之后运行

组测试:类分组

  1. 在每个类上方加注解@Test
  2. 编写对应的xml文件,其中可以指定运行全部,也可以指定运行某一个分组
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="suitename">
<!--运行所有类-->
<test name="runAll">
<classes>
<class name="com.course.testng.groups.Groups1"></class>
<class name="com.course.testng.groups.Groups2"></class>
<class name="com.course.testng.groups.Groups3"></class>
</classes>
</test>
<!--运行指定的分组-->
<test name="runGroup1">
<groups>
<run>
<include name="client"></include>
</run>
</groups>
<classes>
<class name="com.course.testng.groups.Groups1"></class>
<class name="com.course.testng.groups.Groups2"></class>
</classes>
</test> </suite>

异常测试

//异常测试
@Test(expectedExceptions = RuntimeException.class)
public void testCase01() {
System.out.println("Groups1-01");
throw new RuntimeException();
}

@Test(expectedExceptions = 异常类),放在方法上

依赖测试

方法二依赖方法一:先执行方法一,如果方法一失败了,方法二就不执行了

@Test
public void testCase02() {
System.out.println("Groups1-testCase02");
throw new RuntimeException();
} @Test(dependsOnMethods = {"testCase02"})
public void testCase03() {
System.out.println("方法三");
}

@Test(dependsOnMethods = {"被依赖的方法"})

多线程测试

一、使用xml文件实现

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="threadSuiteName" parallel="methods" thread-count="2">
<!--多线程的级别是method方法级别的:parallel="methods"-->
<!--多线程的数量是2:thread-count="2"-->
<!--
tests级别:不同的test tag 下的用例,可以在不同的线程下执行;相同的test tag下的用例,只能在同一个线程中执行
classes级别:不同的class tag 下的用例,可以在不同的线程下执行;相同的class tag下的用例,只能在同一个线程中执行
methods级别:所有用例都可以在不同线程中执行
thread-count:代表最大并发线程数
xml:这种使用xml配置的多线程,不能指定线程池,只能在方法上指定线程池
-->
<test name="thread">
<classes>
<class name="com.course.testng.multiThread.Thread01"></class>
<class name="com.course.testng.BasicAnnotation"></class>
</classes>
</test>
</suite>

超时测试

 @Test(timeOut = 3000) //在3000毫秒,期望得到响应值
public void test01() throws InterruptedException {
Thread.sleep(2000); //sleep了2000毫秒,在3000内有响应值,该用例通过
} @Test(timeOut = 3000) //在3000毫秒,期望得到响应值
public void test02() throws InterruptedException {
Thread.sleep(3500); //3500毫秒之后,才响应,该用例报错
}

@Test(timeOut = 毫秒数) 表示期望多少毫秒内,取得响应值;如果没有,该用例就报错  

  

  

  

  

  

  

  

  

  

  

  

  

(一)TestNG-常用注解参数的更多相关文章

  1. 【转】TestNG常用注解

    http://blog.csdn.net/d6619309/article/details/52435084 TestNG的注解大部分用在方法级别上.常用的注解列举如下: 1. Before类别和Af ...

  2. TestNG常用注解

    原文链接:https://www.yiibai.com/testng/basic-annotations.html    以下是TestNG支持的注释列表: 注解 描述 @BeforeSuite 在该 ...

  3. swagger2的常用注解,传递参数的注意使用方法

    背景介绍: 刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了. 在集成了swag ...

  4. 结合参数接收响应转换原理讲解SpringBoot常用注解

    一.常用注解回顾 1.1 @RequestBody与@ResponseBody //注意并不要求@RequestBody与@ResponseBody成对使用. public @ResponseBody ...

  5. 16 SpringMVC 的请求参数的绑定与常用注解

    1.SpringMVC 绑定请求参数 (1)支持的数据类型 基本类型参数: 包括基本类型和 String 类型POJO 类型参数: 包括实体类,以及关联的实体类数组和集合类型参数: 包括 List 结 ...

  6. testNG 常用的注解

    常用注解介绍: @BeforeSuite 在该套件的所有测试都运行在注释的方法之前,仅运行一次 @AftereSuite 在该套件的所有测试都运行在注释方法之后,仅运行一次 @BeforeClass  ...

  7. testng 的常用注解

    常用注解如下: @BeforeSuite: 此注解的方法会在当前测试集合中的任一测试用例前执行 @AfterSuite: 此注解的方法会在当前测试集合中的所有测试程序结束后执行 @BeforeTest ...

  8. TestNG基本注解

    TestNG的注解: 注解 描述 @BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中. @AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后. @Befor ...

  9. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  10. SpringMVC常用注解,返回方式,路径匹配形式,验证

    常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...

随机推荐

  1. Htop/Glances/Dstat性能测试系统监控工具领域的瑞士军刀

    原文链接:https://mp.weixin.qq.com/s/TvfzIy4uXHPOFQ1h5Q4KWg 建议点击原文链接查看 续上篇分享的[性能测试工具],今天整理了常用的系统监控工具,当然有特 ...

  2. Python3高级核心技术97讲

    可以毫不夸张的说:这门课程是初中级Python开发人员向高级进阶的必学课程 许多Pythoner喜欢追求新的框架,但却不重视Python本身基础知识的学习, 他们不知道的是,语言本身的进阶优先于框架, ...

  3. mysql 的大文本存储TEXT & BLOB

    TEXT & BLOB 一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR:而在保存较大文本时,通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能 ...

  4. 【Ubuntu】Ubuntu系统启动过程中,输入用户名与密码后登录一直卡在紫色界面问题(未解决,最后通过重装系统)

    0. 前言 由于本电脑为公用电脑,可能由于其他人点了图像界面中推荐的内核更新,导致原来安装的NVIDIA显卡驱动 430 与升级后的 5.0 内核不兼容,从而导致输入用户名后登录一直卡在紫色界面.在排 ...

  5. [安卓基础] 009.组件Activity详解

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. 最好用的FTP工具,最好用的FTP工具推荐!

    IIS7服务器管理工具是一个良好的FTP的客户端,可以进行FTP的操作!同时,还可以作为VNC的客户端进行VNC的相关操作!它还能连接Windows和Linux的服务器和PC,并对他们的连接状态进行实 ...

  7. AUTOSAR-标准文档索引

    https://mp.weixin.qq.com/s/6yl5dBP1mSFGVsfE7YRm6w   索引的两种方法: 关键字检索:用Document Search搜索下载,https://www. ...

  8. Java实现 LeetCode 791 自定义字符串排序(桶排序)

    791. 自定义字符串排序 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种规则进行了排序.我们要根据S中的字符顺序对T进行排序.更具体地说,如果S中x在y之前出现,那 ...

  9. Java实现 LeetCode 788 旋转数字(暴力)

    788. 旋转数字 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数.要求每位数字都要被旋转. 如果一个数的每位数字被旋转以后仍然还 ...

  10. Java中多态举例说明

    这里我也就大概说一下他们的关系, 接口就是动物,然而每一个类就是一种动物 给猫有两个功能:叫和睡觉 狗:叫 在f方法里面可以把猫的功能实现 但不能实现狗的功能 在主方法里面有一个猫有一个狗 分别调用 ...