软件开发全流程,网站优化最为重要的内容是,网站建设及报价,销售订单管理系统软件目录
什么是BeforeSuite注解#xff1f;
BeforeSuite带注释的方法何时执行#xff1f;
BeforeSuite annotation有什么用#xff1f;
所以#xff0c;是时候集思广益了
我们可以在一个类中使用多个BeforeSuite注释方法吗#xff1f;
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 namecodekrutest namecodekruclassesclass nameTest.CodekruTestFirst /class nameTest.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 {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.BeforeSuite;
import org.testng.annotations.Test;public class CodekruTestSecond {BeforeSuitepublic void beforeSuite() {System.out.println(In beforeSuite method);}Testpublic void test() {System.out.println(Executing the test in CodekruTestSecond class);Assert.assertTrue(true);}}
我们现在将运行下面的XML来执行这两个类让我们看看会发生什么。
suite namecodekrutest namecodekruclassesclass nameTest.CodekruTestFirst /class nameTest.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 {BeforeSuitepublic void beforeSuite1() {System.out.println(In beforeSuite1 method);}BeforeSuitepublic void beforeSuite2() {System.out.println(In beforeSuite2 method);}Testpublic void test() {System.out.println(Executing the test in CodekruTestSecond class);Assert.assertTrue(true);}}
然后运行下面的XML文件
!-- BeforeSuite annoated method will execute here --
suite namecodekru test namecodekruTestclassesclass nameTest.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: 0BeforeSuite放在超类上时如何工作
让我们通过一个例子来看看这个问题。
package Test;import org.testng.Assert;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;class CodekruTest {BeforeSuitepublic 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 namecodekrutest namecodekruclassesclass nameTest.CodekruTestSubclass //classes/test
/suite
输出-
beforeSuite method called
Executing the subclass test
codekru
Total tests run: 1, Failures: 0, Skips: 0因此即使带注释的方法放在超类上beforeSuiteMethod也会运行因为子类继承了所有方法。但是如果我们将beforeSuiteMethod设置为private它将不会运行因为private方法不能被子类继承。