TestNG @BeforeClass 注解

目录

那么,这个带@BeforeClass注释的方法什么时候执行呢? 

如果我们在一个类中放置多个@BeforeClass注释方法会发生什么?


在这篇文章中,我们将讨论TestNG中的@BeforeClass注释。@BeforeClass注释方法将在特定类的测试用例之前运行。

那么,这个带@BeforeClass注释的方法什么时候执行呢? 

下面的XML将有助于理解执行点。

<suite name="codekru">
    <test name="codekru">  <!-- @BeforeTest will execute here -->
        <classes>
            <class name="Test.CodekruTestFirst" /> <!-- @BeforeClass for CodekruTestFirst will execute here -->
            <class name="Test.CodekruTestSecond" /> <!-- @BeforeClass for CodekruTestSecond will execute here -->
        </classes>
    </test>
</suite>

我们可以在一个测试中有多个@BeforeClass注释的方法,就像我们可以在一个测试中有不同的类一样,如上面在XML文件中所示,每个类都可以有自己的@BeforeClass注释方法。

让我们看看一些行动的东西。我的意思是代码

我们将采用两个类,CodekruTestFirst和CodekruTestSecond,每个类都有自己的@BeforeClass注释方法。

CodekruTestFirst.java

package Test;
 
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
 
public class CodekruTestFirst {
 
    @BeforeClass
    public void beforeClass() {
        System.out.println("beforeClass method in CodekruTestFirst class");
    }
 
    @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.BeforeClass;
import org.testng.annotations.Test;
 
public class CodekruTestSecond {
 
    @BeforeClass
    public void beforeClass() {
        System.out.println("beforeClass method in CodekruTestSecond class");
    }
 
    @Test
    public void test() {
        System.out.println("Executing the test in CodekruTestSecond class");
        Assert.assertTrue(true);
    }
 
}

现在,我们将运行下面的XML文件,看看会发生什么。

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
 
<suite name="codekru">
    <test name="codekru">
        <classes>
            <class name="Test.CodekruTestFirst" /> <!-- @BeforeClass for CodekruTestFirst will execute here -->
            <class name="Test.CodekruTestSecond" /> <!-- @BeforeClass for CodekruTestSecond will execute here -->
        </classes>
    </test>
</suite>

产出-

beforeClass method in CodekruTestFirst class
Executing the test in CodekruTestFirst class
beforeClass method in CodekruTestSecond class
Executing the test in CodekruTestSecond class

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

这里发生了什么默认情况下,TestNG将按照XML文件中的顺序运行我们的测试。因此,它首先获取CodekruTestFirst类,然后运行它的@BeforeClass注释方法,然后运行它的测试用例。在那之后,它得到了CodekruTestSecond类,所以TestNG首先运行了它的@BeforeClass注释方法,然后运行了它的测试用例。

如果我们在一个类中放置多个@BeforeClass注释方法会发生什么?

如果我们在一个类中放置多个@BeforeClass带注释的方法,那么所有带注释的方法都会被执行。您可以尝试在CodekruTestFirst类中再添加一个带注释的方法,然后重新运行XML。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的宝藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值