前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TestNG Annotations示例

TestNG Annotations示例

作者头像
明明如月学长
发布2021-08-27 15:29:07
4040
发布2021-08-27 15:29:07
举报

【本系列其他教程正在陆续翻译中,点击分类:TestNG进行查看。】

【翻译 by 明明如月 QQ 605283073】

原文地址:http://websystique.com/java/testing/testng-annotations-example/

上一篇:TestNG Hello World

下一篇:TestNG Groups 例子

本文讲述TestNG的如下 annotations (注解):@Test,@BeforeMethod@AfterMethod@BeforeClass@AfterClass@BeforeGroups,@AfterGroups@BeforeSuite@AfterSuite@BeforeTest & @AfterTest

以后的文章将讲述其他的一些比较流行的 注解@Parameters & @DataProvider

上一篇文章已经介绍了TestNG的基本使用方法。本文我们将使用注解,并且循序渐进。

----------------------------------------------------------

TestNG Annotations根据使用的频率经常可进行如下划分:

1) 基本注解: 最常见几种注解

  • @Test, @BeforeClass, @AfterClass, @BeforeMethod, @AfterMethod

2)高级的注解:针对特别的 情况 设置等的注解

  • 组注解 : @BeforeGroups, @AfterGroups
  • 组件相关的注解 : @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest

-----------------------------------

基础注解

先写个将用来被测试的类:

代码语言:javascript
复制
package com.websystique.testng;
 
public class Calculator {
     
    public double add(double a, double b){
        return a+b;
    }
     
    public double subtract(double a, double b){
        return a-b;
    }
     
    public double multiply(double a, double b){
        return a*b;
    }
     
}

下面对每一个方法进行测试:

代码语言:javascript
复制
package com.websystique.testng;
 
import java.lang.reflect.Method;
 
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
 
public class TestCalculator {
 
    Calculator calculator;
     
    @BeforeClass
    public void beforeClass(){
        //Ideal place to perform some setup which is shared among all tests.
        //E.g. Initializing DB connection, setting environment properties
        System.out.println("@BeforeClass: I run only once, before first test start.");
        calculator = new Calculator();
    }
 
    @AfterClass
    public void afterClass(){
        //Ideal place to perform some cleanup of setup which is shared among all tests.
        System.out.println("@AfterClass: I run only once, after all tests have been done.\n");
        calculator = null;
    }
 
    @BeforeMethod
    public void beforeEachTestMethod(Method method){//Parameter are optional
        //May perform some initialization/setup before each test.
        //E.g. Initializing User whose properties may be altered by actual @Test
        System.out.println("\n@BeforeMethod: I run before each test method. Test to be executed is : "+method.getName());
    }
     
    @AfterMethod
    public void afterEachTestMethod(Method method){//Parameter are optional
        //May perform cleanup of initialization/setup after each test.
        System.out.println("@AfterMethod: I run after each test method. Test just executed is : "+method.getName()+"\n");
    }
 
    @Test
    public void testAdd(){
        System.out.println("@Test add");
        Assert.assertEquals(calculator.add(2, 3), 5.0);
    }
     
    @Test
    public void testSubtract(){
        System.out.println("@Test subtract");
        Assert.assertTrue(calculator.subtract(5, 3) > 1, "Subtract test failed");
    }
     
    @Test
    public void testMultiply(){
        System.out.println("@Test multiply");
        Assert.assertEquals(calculator.multiply(5, 3) , 15.0);
    }
     
}

根据上一篇文章所介绍的 采用 mvn clean test or TestNG eclipse 插件进行测试

下面是测试结果:

代码语言:javascript
复制
@BeforeClass: I run only once, before first test start.
 
@BeforeMethod: I run before each test method. Test to be executed is : testAdd
@Test add
@AfterMethod: I run after each test method. Test just executed is : testAdd
 
 
@BeforeMethod: I run before each test method. Test to be executed is : testMultiply
@Test multiply
@AfterMethod: I run after each test method. Test just executed is : testMultiply
 
 
@BeforeMethod: I run before each test method. Test to be executed is : testSubtract
@Test subtract
@AfterMethod: I run after each test method. Test just executed is : testSubtract
 
@AfterClass: I run only once, after all tests have been done.
 
PASSED: testAdd
PASSED: testMultiply
PASSED: testSubtract
 
===============================================
    Default test
    Tests run: 3, Failures: 0, Skips: 0
===============================================
 
 
===============================================
Default suite
Total tests run: 3, Failures: 0, Skips: 0
===============================================
@BeforeClass, @AfterClass

@BeforeClass 只会在第一个测试方法执行前被执行一次。这个比较适合对所有测试方法的配置初始化。

本例中 我们再@BeforeClass 注解的方法里创建了一个calculator实例。

@AfterClass 将在所有的测试方法执行后只被调用一次。

@BeforeMethod, @AfterMethod

@BeforeMethod 将在每一个单元测试执行前被执行一次。

于此相似的是@AfterMethod 方法将在每个单元测试方法执行后被执行一次。

@Test

在要测试的方法上写此注解。

-----------------------------------

高级注解

1)组注解:

TestNG 允许我们将多个测试组成一组进行测试。

通过分组,对一个组进行测试时其他分组的测试将被忽略。

多个测试可以属于一个组,一个测试也可以成为多个组的一部分。

@BeforeGroups, @AfterGroups

带@BeforeGroups注解的方法将在本组内任何测试方法执行前被执行一次。

和此类似的是带@AfterGroups 注解的方法将在本组内任何测试方法执行后被执行一次。

下一篇文章将讲述 TestNG Groups例子

2) 套件注解:

使用 TestNG的每个测试方法都是套件的一部分。

在TestNG中一个套件通过一个通常命名为testng.xml的XML文件表示。

 标签是此xml的第一个标签,代表一个套件,它里面可以包含

标签。每一个标签相应的也可能含有一个或者多个。

,  标签。

@BeforeSuite, @AfterSuite

@BeforeSuite

注解的方法将在套件内什么的任何测试方法执行前被执行一次。

这比较适合设置或者初始化多个分组共有的环境。

 @AfterSuite

注解的方法将在套件内什么的任何测试方法执行后被执行一次。

这比较适合设置或者初始化多个分组共有的环境。

@BeforeTest, @AfterTest

@BeforeTest将在 带有标签的任何方法执行之前执行一次。

@AfterTest则与之相反。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/05/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础注解
  • 高级注解
    • 1)组注解:
      • 2) 套件注解:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档