IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> testNG常见测试方法_idea_java -> 正文阅读

[Java知识库]testNG常见测试方法_idea_java

  1. testNG忽略测试,跑测试用例时忽略暂时不执行的方法
    在@Test注释后添加false属性,不手动添加时默认是true
package com.ngtest.suite;

import org.testng.annotations.Test;

public class ignoreTest {
    @Test //有test标签一定会被测试到,默认的属性是true
    public void ignore1(){
        System.out.println("ignore1 执行");
    }
    @Test(enabled = false)
    public void ignore2(){
        System.out.println("ignore2 执行");
    }
}
运行结果为:ignore1 执行

2.testNG组测试:方法分组归类测试
在@Test后添加groups的属性

package com.ngtest.groups;

import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;

public class GroupsOnMethod {
    @Test(groups = "server")
    public void test01(){
        System.out.println("这是服务端组的测试方法111");
    }
    @Test(groups = "server")
    public void test02(){
        System.out.println("这是服务端组的测试方法222");
    }
    @Test(groups = "client")
    public void test03(){
        System.out.println("这是客户端组的测试方法333");
    }
    @Test(groups = "client")
    public void test04(){
        System.out.println("这是客户端组的测试方法444");
    }
    @BeforeGroups("server")
    public void beforeGroupsOnServer(){
        System.out.println("这是服务端组运行之前运行的方法");
    }
    @AfterGroups("server")
    public void afterGroupsOnServer(){
        System.out.println("这是服务端组运行之后运行的方法");
    }
    @BeforeGroups("client")
    public void beforeGroupsOnClient(){
        System.out.println("这是客户端组运行之前运行的方法");
    }
    @AfterGroups("client")
    public void afterGroupsOnClient(){
        System.out.println("这是客户端组运行之后运行的方法");
    }
}

3.testNG异常测试
加异常属性:expectedExceptions = RuntimeException.class

package com.ngtest.suite;

import org.testng.annotations.Test;

public class ExceptedException {
    //在期望结果为某一个异常的时候进行异常测试
    //比如传入某个不合法的参数,程序抛出异常
    @Test(expectedExceptions = RuntimeException.class)
    public void runTimeExceptionSuccess(){
        System.out.println("这是我的异常测试");
        throw new RuntimeException();
    }
}
运行结果:这是我的异常测试

4.testNG依赖测试:就是我本次测试方法2依赖于其他方法1,就是方法1先执行,然后才可以执行方法2

package com.ngtest.suite;

import org.testng.annotations.Test;

public class Depend {
    @Test
    public void test1(){
        System.out.println("test1 run");
    }
    @Test(dependsOnMethods = {"test1"})
    public void test2(){
        System.out.println("test2 run");
    }
}
运行test2,结果为:test1 run
                 test2 run  

在依赖测试时,当被依赖的方法1出现异常失败了,方法2就会被忽略,使用场景:比如说买东西,得先登录账号,如果登录失败了就无法买东西了

4.testNG xml文件传参进行参数化测试
@Parameters 注解
需要在resources里新建parameter.xml配置项,进行传参,数据来源于xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<suite name="parameter">
    <test name ="param">
        <classes>
            <parameter name ="name" value="zhangsan"/>
            <parameter name ="age" value="10"/>
            <class name ="com.ngtest.Paramter.parameterTest"/>
        </classes>
    </test>
</suite>
package com.ngtest.Paramter;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class parameterTest {
    @Test
    @Parameters({"name","age"})
    public void paramTest1(String name,int age){
        System.out.println("name=" + name + "; age =" + age);//拼接字符串
    }
}
运行结果:name=zhangsan; age =10

  1. testNG 多线程测试-xml文件实现,用来测试多线程运行的开发代码,没有关联的用例可以使用多线程减少执行时间
 //.xml配置文件
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<!--suite必须有name-->
<suite name="thread" parallel="methods" thread-count="2">
    <!--
    tests级别:不同的test标签(tag)下的用例可以在不同的线程下执行
               相同的test标签(tag)下的用例只能在同一个线程中去执行
    methods级别:所有用例都可以在不同的线程下去执行

    parallel设置线程级别,可以是parallel="methods",parallel="tests",parallel="classes"
    parallel="methods" 的意思是我的多线程是方法级别的
    thread-count: 代表了最大并发线程数

    classes级别:相同的classes标签下的用例在同一个线程中执行
                不同的classes标签下的用例可以在不同的线程下执行
    xml文件配置这种方式不能指定线程池,只有方法上才可以指定线程池
     -->
    <test name="threadTest">
        <classes>
            <class name="com.ngtest.multiThread.multiThreadOnXml"/>
        </classes>
    </test>
    <test name="threadTest2">
        <classes>
            <class name="com.ngtest.multiThread.multiThreadOnXml"/>
        </classes>
    </test>

</suite>

测试主程序:multiThreadOnXml.java

package com.ngtest.multiThread;

import org.testng.annotations.Test;

public class multiThreadOnXml {
    @Test
    public void test1() { //Thread.currentThread().getId()此方法打印测试方法的线程的ID
        System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
    }
    @Test
    public void test2() {
        System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
    }
    @Test
    public void test3() {
        System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
    }
}

6.超时测试

package com.ngtest.suite;

import org.testng.annotations.Test;

public class timeOutTest { //当测试用例的测试时间超过设定的时间,则认为执行失败
    @Test(timeOut = 3000)//单位是毫秒制,是3s
    public void timeOutSuccess() throws InterruptedException {
        Thread.sleep(2000); //实际上功能2s可以完成,设置的超时测试进行等待的3s,用例执行用了2s
                           //测试成功
    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:31:58  更:2021-09-22 14:33:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:19:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码