目录
那么,这个带@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 {@BeforeClasspublic void beforeClass() {System.out.println("beforeClass method in CodekruTestFirst class");}@Testpublic 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 {@BeforeClasspublic void beforeClass() {System.out.println("beforeClass method in CodekruTestSecond class");}@Testpublic 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。