TestNG-常用注解参数

注解@Test标签


 

1
2
3
4
5
6
7
8
9
10
package com.course.testng;
 
import org.testng.annotations.Test;
 
public class BasicAnnotation {
    @Test
    public void testCase01(){
        System.out.println("ddd");
    }
}

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

注解@BeforeMethod和@AfterMethod标签


1
2
3
4
5
6
7
8
9
@BeforeMethod
    public void beforeMethod(){
        System.out.println("在测试方法之前运行");
    }
 
@AfterMethod
    public void afterMethod(){
        System.out.println("在测试方法之后");
    }

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

注解@BeforeClass和@AfterClass标签


 

1
2
3
4
5
6
7
8
@BeforeClass
public void beforeClass(){
    System.out.println("在类之前");
}
@AfterClass
public void afterClass(){
    System.out.println("在类运行之后");
}

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

 注解@BeforeSuit和@AfterSuit标签


1
2
3
4
5
6
7
8
@BeforeSuite
public void beforeSuite(){
    System.out.println("在套件suit之前");
}
@AfterSuite
public void afterSuite(){
    System.out.println("在套件suit之后");
}  

类在运行之前运行suit

注解运行顺序总结:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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

1
2
3
4
5
6
7
8
9
10
在套件suit之前
在类之前
在测试方法之前运行
ddd
在测试方法之后
在测试方法之前运行
ddd2
在测试方法之后
在类运行之后
在套件suit之后

忽略测试


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

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

组测试 


 

组测试:方法分组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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. 在每个类上方加注解@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>
复制代码

异常测试


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

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

 依赖测试


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

1
2
3
4
5
6
7
8
9
10
@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 = 毫秒数) 表示期望多少毫秒内,取得响应值;如果没有,该用例就报错

 

posted @   豆芽花花儿酱  阅读(1098)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示