java自动化_Java自动化测试框架(TestNG)——基本注解与实例

本文详细介绍了TestNG,一个基于JUnit和NUnit的开源Java自动化测试框架。文章通过实例展示了如何使用TestNG的注解,如@Test、@BeforeSuite、@AfterSuite等,以及它们的执行顺序。此外,还探讨了注解的作用域,并提供了自定义XML配置文件的使用方法。
摘要由CSDN通过智能技术生成
2c6118584956fd62e2d5a878043a6afc.png

TestNG是开源的Java自动化测试框架,框架的设计灵感来源于JUnit 和 NUnit。其消除了大部分的旧框架的限制,使测试开发人员能够编写更加灵活和强大的测试。

注解 Annotation 是从JDK1.5 开始引入到Java语言中,TestNG 借鉴了Java注解来定义测试。

TestNG Maven依赖

使用Maven作为项目管理工具,可以对 Java 项目进行构建、依赖管理。我们需要在pom.xml中添加 testng 依赖,如下:

                org.testng        testng        7.0.0-beta1        test    

一个简单的示例

如下,我们创建 baseDemoOtherTest 测试类,通过@Test注解来实现。

// baseDemoOtherTest.javapackage testng.base.demo;import org.testng.annotations.Test;public class baseDemoOtherTest {    @Test    public void testOtherDemo1() {        System.out.println("            运行 testOtherDemo1()测试方法");    }    @Test    public void testOtherDemo2() {        System.out.println("            运行 testOtherDemo2()测试方法");    }}

TestNG常用注解及使用

@Test            将类或方法标记为测试的一部分。@BeforeSuite     在该套件的所有测试之前运行注解方法,仅运行一次(套件测试是一起运行的多个测试类)。@AfterSuite      在该套件的所有测试之后运行注解方法,仅运行一次(套件测试是一起运行的多个测试类)。@BeforeClass     在调用当前类的第一个测试方法之前运行注解方法,注解方法仅运行一次。@AfterClass      在调用当前类的所有测试方法之后运行注解方法,注解方法仅运行一次。@BeforeTest      在属于标签内的类的所有测试方法之前运行注解方法。@AfterTest       在属于标签内的类的所有测试方法之后运行注解方法。@BeforeMethod    在每个测试方法之前运行注解方法。@AfterMethod     在每个测试方法之后运行注解方法。@BeforeGroups    在配置的分组中第一个方法运行之前运行注解方法。@AfterGroups     在配置的分组中所有的方法运行之后运行注解方法    

增加一个测试类 baseDemoTest

package testng.base.demo;import org.testng.annotations.*;public class baseDemoTest {    @BeforeSuite    public void beforeSuite() {        System.out.println("@BeforeSuite:测试套件(当前xml中标签)之前运行@BeforeSuite注释方法");    }      @AfterSuite    public void afterSuite() {        System.out.println("@AfterSuite:测试套件(当前xml中标签)之后运行@AfterSuite注释方法");    }      @BeforeTest    public void beforeTest() {        System.out.println("    @BeforeTest:测试用例(当前xml中标签)之前运行@BeforeTest注释方法");    }      @AfterTest    public void afterTest() {        System.out.println("    @AfterTest:测试用例(当前xml中标签)之后运行@AfterTest注释方法");    }      @BeforeMethod    public void beforeMethod() {        S       ystem.out.println("        @BeforeMethod:当前类每个测试方法(@Test)之前运行@BeforeMethod注释方法");    }    @AfterMethod    public void AfterMethod() {        System.out.println("        @AfterMethod:当前类每个测试方法(@Test)之后运行@AfterMethod注释方法");    }    @BeforeGroups(value = {"A"})    public void beforeGroups() {        System.out.println("        @BeforeGroups:在A组第一个方法运行之前运行@BeforeGroups注释方法");    }    @AfterGroups(value = {"A"})    public void afterGroups() {        System.out.println("        @AfterGroups:在A组最后一个方法运行之后运行@AfterGroups注释方法");    }    @Test    public void testDemo1() {        System.out.println("            @Test:运行testDemo1()测试方法");    }    @Test(groups = {"A"})    public void testDemo2() {        System.out.println("            @Test:运行testDemo2()测试方法,归属A组");    }S    @Test(groups = {"A"})    public void testDemo3() {        System.out.println("            @Test:运行testDemo3()测试方法,归属A组");    }}

在工程目录中新建一个自定义xml配置文件testng.xml

<?xml version="1.0" encoding="UTF-8"?>                                            

运行testng.xml 配置测试,结果如下,我们可以非常清晰的看到执行顺序。

3d685dd1c198d820293b71740c34f7b3.png

总结一下执行顺序如下:@BeforeSuite->@BeforeTest->@BeforeClass-> {@BeforeMethod->@Test->@AfterMethod} ->@AfterClass->@AfterTest->@AfterSuite。其中{}内的与多少个@Test注解的测试方法,就循环执行多少次。


注解的作用域

我们接下来改造一下第一个demo测试类,如下,我们将其中一个测试方法设置为分组A。

package testng.base.demo;import org.testng.annotations.Test;public class baseDemoOtherTest {    @Test    public void testOtherDemo1() {        System.out.println("            运行 testOtherDemo1()测试方法");    }    @Test(groups = {"A"})    public void testOtherDemo2() {        System.out.println("            运行 testOtherDemo2()测试方法");    }}

更新下testng.xml配置,如下:

<?xml version="1.0" encoding="UTF-8"?>                                                                                                                                    

运行testng.xml 配置测试,从如下结果可以看出,@BeforeGroups、@AfterGroups的作用域是可以跨类的,但类必须是在testng.xml中同一个测试用例(标签)范围内;

8b8974e1636a0641bcaa36df420d9b39.png

配置文件xml常用标签

                                                                                                                                                                                                                                                                                                                                                                                                              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值