TestNG中的@BeforeSuite注释

这篇具有很好参考价值的文章主要介绍了TestNG中的@BeforeSuite注释。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

什么是@BeforeSuite注解?

@BeforeSuite带注释的方法何时执行?

@BeforeSuite annotation有什么用?

所以,是时候集思广益了

我们可以在一个类中使用多个@BeforeSuite注释方法吗?

@BeforeSuite放在超类上时如何工作?


TestNG是Java生态系统中许多人使用的流行测试框架。它提供了各种注释,帮助规范测试执行。最重要的注释之一是@BeforeSuite注释。

本文将讨论@BeforeSuite注释及其在TestNG中的用法。我们将介绍以下主题:

  • 什么是@BeforeSuite注解?
  • 使用@BeforeSuite注释有什么好处?
  • 然后是一些有趣的问题
什么是@BeforeSuite注解?

@BeforeSuite注释是TestNG中所有@BeforeXXX和@AfterXXX注释中的最高优先级。这意味着任何带有@BeforeSuite注释的方法都将在套件中的任何其他测试之前执行。

@BeforeSuite带注释的方法何时执行?

通过参考testng.xml文件,可以很容易地理解@BeforeXXX和@AfterXXX注释的执行点。

<!-- @BeforeSuite annoated method will execute here  -->
<suite name="codekru">
    <test name="codekru">
        <classes>
            <class name="Test.CodekruTestFirst" />
            <class name="Test.CodekruTestSecond" />
        </classes>
    </test>
</suite>

因此,@BeforeSuite注释方法将在suite标记之前执行。

我们将采用两个类(CodekruTestOne和CodekruTestSecond),并在CodekruTestSecond类中定义@BeforeSuite注释方法。

CodekruTestFirst.java

package Test;
 
import org.testng.Assert;
import org.testng.annotations.Test;
 
public class CodekruTestFirst {
 
    @Test
    public void test() {
        System.out.println("Executing the test in CodekruTestFirst class");
        Assert.assertTrue(true);
    }
     
     
}

CodekruTestSecond.java

package Test;
 
import org.testng.Assert;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
 
public class CodekruTestSecond {
 
    @BeforeSuite
    public void beforeSuite() {
        System.out.println("In beforeSuite method");
    }
     
    @Test
    public void test() {
        System.out.println("Executing the test in CodekruTestSecond class");
        Assert.assertTrue(true);
    }
     
}

我们现在将运行下面的XML来执行这两个类,让我们看看会发生什么。

<suite name="codekru">
    <test name="codekru">
        <classes>
            <class name="Test.CodekruTestFirst" />
            <class name="Test.CodekruTestSecond" />
        </classes>
    </test>
</suite>

输出-

In beforeSuite method
Executing the test in CodekruTestFirst class
Executing the test in CodekruTestSecond class

===============================================
codekru
Total tests run: 2, Failures: 0, Skips: 0

 

@BeforeSuite annotation有什么用?
  • 它允许您为套件中的所有测试执行常见的设置任务,例如初始化数据或设置环境。
  • 它允许您在单个方法中定义常见的设置任务,从而减少了代码重复。
  • 它通过将常见的设置任务与实际的测试代码分开来提高测试代码的可读性。
所以,是时候集思广益了
我们可以在一个类中使用多个@BeforeSuite注释方法吗?

答案是肯定的。我们可以在一个类中使用多个@BeforeSuite注释方法,并且所有方法都将在套件中的测试用例之前运行。我们将在CodekruTestSecond类中保留两个@BeforeSuite注释方法。我们来做个示范。

package Test;
 
import org.testng.Assert;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
 
public class CodekruTestSecond {
 
    @BeforeSuite
    public void beforeSuite1() {
        System.out.println("In beforeSuite1 method");
    }
     
    @BeforeSuite
    public void beforeSuite2() {
        System.out.println("In beforeSuite2 method");
    }
     
    @Test
    public void test() {
        System.out.println("Executing the test in CodekruTestSecond class");
        Assert.assertTrue(true);
    }
     
}

然后运行下面的XML文件

<!-- @BeforeSuite annoated method will execute here  -->
<suite name="codekru">   
    <test name="codekruTest">
        <classes>
            <class name="Test.CodekruTestSecond" />
        </classes>
    </test>
 
</suite>

输出-

In beforeSuite1 method
In beforeSuite2 method
Executing the test in CodekruTestSecond class

===============================================
codekru
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

 

@BeforeSuite放在超类上时如何工作?

让我们通过一个例子来看看这个问题。

package Test;
 
import org.testng.Assert;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
 
class CodekruTest {
 
    @BeforeSuite
    public void beforeSuiteMethod() {
        System.out.println("beforeSuite method called");
    }
 
}
 
public class CodekruTestSubclass extends CodekruTest {
 
    @Test()
    public void test() {
        System.out.println("Executing the subclass test");
        Assert.assertTrue(true);
    }
 
}

现在,我们将在testng.xml下面运行,看看会发生什么

<suite name="codekru">
    <test name="codekru">
        <classes>
            <class name="Test.CodekruTestSubclass" />
        </classes>
    </test>
</suite>

输出-

beforeSuite method called
Executing the subclass test

===============================================
codekru
Total tests run: 1, Failures: 0, Skips: 0
===============================================

因此,即使带注释的方法放在超类上,beforeSuiteMethod也会运行,因为子类继承了所有方法。但是,如果我们将beforeSuiteMethod设置为private,它将不会运行,因为private方法不能被子类继承。文章来源地址https://www.toymoban.com/news/detail-819547.html

到了这里,关于TestNG中的@BeforeSuite注释的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java+Selenium+Testng自动化学习(一):环境搭建

    目录 一、软件准备及版本介绍  二、安装步骤及环境变量配置:  2.1    Java安装及配置 2.2    IDE工具(Intellij IDEA)安装 2.3    Maven安装及配置 2.4    Maven本地仓库配置 2.5    Intellij IDEA配置mvn仓库 2.6    Intellij IDEA创建maven项目 2.7    Selenium安装 2.8    TestNG安装 2.9    Chr

    2024年02月05日
    浏览(42)
  • 无界面自动化测试(IDEA+Java+Selenium+testng)(PhantomJS)

    自动化测试(IDEA+Java+Selenium+testng)(PhantomJS)_phantomjs怎么写js脚本idea-CSDN博客 上述连接是参考:现在如果按照如上链接进行操作大概率会失败,下面会针对如上链接的部分步骤做出修改 1、在pom.xml文件中需要使用低版本selenium-java依赖包,目前我使用的是4.13.0版本的所以在运行

    2024年01月18日
    浏览(51)
  • 0基础→自动化测试框架实现:java + testng + httpclient + allure

    必备基础 java基础:https://www.cnblogs.com/uncleyong/p/15828510.html 配置文件解析(properties):https://www.cnblogs.com/uncleyong/p/15867779.html fastjson的使用(处理json字符串、json数组):https://www.cnblogs.com/uncleyong/p/16683578.html jsonpath的使用:https://www.cnblogs.com/uncleyong/p/16676791.html java操作excel(通过POI):

    2024年02月16日
    浏览(56)
  • java基础 - 实现一个简单的Http接口功能自动化测试框架(HttpClient + TestNG)

    已知现在已经用Spring boot框架搭建了一个简单的web服务,并且有现成的Controller来处理http请求,以之前搭建的图书管理服务为例,BookController的源码如下: 在搭建一个Http接口功能自动化测试框架之前,我们需要思考几个问题: 1、http请求的发送,使用什么实现? 2、接口返回的

    2024年02月05日
    浏览(55)
  • java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)

    1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例的可维护性。 PageObject设计模式:是将某个页面的所有\\\"元素(包含控件)属性

    2024年02月06日
    浏览(51)
  • Java selenium实战:IntelliJ IDEA 创建maven项目,配置selenium+TestNG+cucumber+Allure环境

    目录 一、软件准备: 二、安装步骤: IntelliJ IDEA下载 下载安装JDK Maven下载安装 Chromedriver 三、打开百度搜索实例: IntelliJ IDEA:IntelliJ IDEA – the Leading Java and Kotlin IDE JDK:Java Downloads | Oracle Maven:https://maven.apache.org/download.cgi Maven repository: Maven Repository: Search/Browse/Explore (mvnre

    2024年02月04日
    浏览(75)
  • Java+Excel+POI+testNG基于数据驱动做一个简单的接口测试【杭州多测师_王sir】

    一、创建一个apicases.xlsx放入到eclipse的resource里面,然后refresh刷新一下 二、在pom.xml文件中加入poi和testng的mvn repository、然后在eclipse的对应目录下放入features和plugins,重启eclipse就可以看到testNG了 三、封装一个读取Excel表格的工具类 四、通过testng创建一个testng类,引入@DataProv

    2024年02月13日
    浏览(41)
  • Linux:shell 中的单行注释和多行注释

    关于 shell 中的单行注释和多行注释 众所周知 ,使用#  比如想要注释 echo \\\"Hello World\\\" [root@test ~]# vim test.sh # echo \\\"Hello World\\\"         Shell 语言中是没有类似于 C/C++, Python 等计算机语言多行注释的功能的,可是对于脚本文件进行调试时,我们不可避免的需要对其中的代码进行注

    2024年02月15日
    浏览(44)
  • SQL中的注释语句

    在SQL中,注释语句用于在SQL脚本中添加注释,以便于其他开发人员或自己更好地理解代码。 在SQL中,单行注释使用双短横线(--)来表示。在双短横线后面的文本将被视为注释,直到该行结束。例如: SELECT column1, column2 -- 这是一条注释 FROM table1; 在SQL中,多行注释使用“/ ”

    2024年02月07日
    浏览(26)
  • 注释的魔力:HTML、JS/jQuery和CSS中的单行与多行注释

    在HTML中,我们使用 !-- 和 -- 来创建单行注释。例如: 而多行注释也类似例如: 在JavaScript和jQuery中,我们使用 // 来创建单行注释。例如: 对于多行注释,我们可以使用 /* 和 */ 来创建。例如: 在CSS中,我们同样可以使用 /* 和 */ 来创建单行注释。例如: 对于多行注释,我们

    2024年01月18日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包