专业建站公司提供详细的功能描述及报价,seo搜索排名优化方法,3d游戏建模培训,网站开发完整项目平台网站开发目录
TestNG注释列表
BeforeXXX和AfterXXX注释放在超类上时如何工作#xff1f;
使用BeforeXXX和AfterXXX TestNG注释 TestNG是一个测试框架#xff0c;旨在简化广泛的测试需求#xff0c;从单元测试#xff08;隔离测试一个类#xff09;到集成测试#xff08;测试由…目录
TestNG注释列表
BeforeXXX和AfterXXX注释放在超类上时如何工作
使用BeforeXXX和AfterXXX TestNG注释 TestNG是一个测试框架旨在简化广泛的测试需求从单元测试隔离测试一个类到集成测试测试由几个类、几个包甚至几个外部框架组成的整个系统如应用程序服务器。
在TestNG中NG代表下一代测试
TestNG为我们提供了许多注释允许在某个点之前和之后执行一些Java逻辑以及更多。 那么什么是注解呢注释是元数据的一种形式它提供有关程序的数据而这些数据不是程序本身的一部分。注释对它们所注释的代码的操作没有直接影响。
TestNG注释列表
注释名称它有什么用BeforeSuite带注释的方法将在此套件中的所有测试运行之前运行AfterSuite带注释的方法将在此套件中的所有测试运行之后运行。BeforeTest带注释的方法将在任何属于标记中的类的测试方法运行之前运行test。测试后带注释的方法将在所有属于标记中的类的测试方法运行之后运行test。BeforeGroups此配置方法将在其之前运行的组的列表。此方法保证在调用属于任何这些组的第一个测试方法之前不久运行。AfterGroups此配置方法将在其之后运行的组的列表。此方法保证在调用属于这些组中任何一个的最后一个测试方法后不久运行。BeforeClass带注释的方法将在调用当前类中的第一个测试方法之前运行。AfterClass带注释的方法将在当前类中的所有测试方法运行之后运行。BeforeMethod注释方法将在每个测试方法之前运行。AfterMethod注释方法将在每个测试方法之后运行。DataProvider将方法标记为提供测试方法的数据。带注释的方法必须返回一个Object[][]其中每个Object[]可以被分配测试方法的参数列表。想要从这个DataProvider接收数据的Test方法需要使用一个与这个annotation的名称相等的dataProvider名称。
Factory将方法标记为工厂该工厂返回将由TestNG用作Test类的对象。方法必须返回Object[]。Listeners定义测试类上的侦听器。Parameters描述如何将参数传递给Test方法。TestMarks a class or a method as part of the test.
BeforeXXX和AfterXXX注释放在超类上时如何工作
如果将这些注释放在超类上则子类也将继承这些注释。这对于将多个测试类的测试设置集中在一个公共超类中非常有用。在这种情况下TestNG保证Before方法按照继承顺序执行首先是最高的超类然后沿着继承链向下而After方法则按照相反的顺序执行沿着继承链向上。
现在我们将创建两个类其中CodekruTest将是CodekruTestSubclass的超类并具有以下结构 CodekruTest.java package Test;import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;public class CodekruTest {BeforeClasspublic void beforeSuperClassMethod() {System.out.println(In before method of Superclass);Assert.assertTrue(true);}AfterClasspublic void AfterSuperClassMethod() {System.out.println(In after method of Superclass);Assert.assertTrue(true);}}
CodekruTestSubclass.java
package Test;import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class CodekruTestSubclass extends CodekruTest {BeforeClasspublic void beforeSubClassMethod() {System.out.println(In before method of Subclass);Assert.assertTrue(true);}AfterClasspublic void AfterSubClassMethod() {System.out.println(In after method of Subclass);Assert.assertTrue(true);}Testpublic void test() {System.out.println(Executing the test);Assert.assertTrue(true);}}
现在我们将只运行CodekruTestSubclass看看会发生什么。下面是用于此的testng.xml
suite namecodekrutest namecodekruclassesclass nameTest.CodekruTestSubclass //classes/test
/suite
输出-
In before method of Superclass
In before method of Subclass
Executing the test
In after method of Subclass
In after method of Superclass
codekru
Total tests run: 1, Failures: 0, Skips: 0因此我们可以看到超类的before方法首先运行after方法随后运行。
使用BeforeXXX和AfterXXX TestNG注释
层级是-
BeforeSuiteBeforeTestBeforeClassBeforeMethod测试AfterMethodAfterClassAfterTestAfterSuite
下面是一个小例子以演示上述层级-
package Test;import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;public class CodekruTest {BeforeSuitepublic void beforeSuiteMethod() {System.out.println(before Suite);Assert.assertTrue(true);}BeforeTestpublic void beforeTestMethod() {System.out.println(before Test);Assert.assertTrue(true);}BeforeClasspublic void beforeClassMethod() {System.out.println(before Class);Assert.assertTrue(true);}BeforeMethodpublic void beforeMethod() {System.out.println(before Method);Assert.assertTrue(true);}AfterSuitepublic void afterSuiteMethod() {System.out.println(after Suite);Assert.assertTrue(true);}AfterTestpublic void afterTestMethod() {System.out.println(after Test);Assert.assertTrue(true);}AfterClasspublic void afterClassMethod() {System.out.println(after Class);Assert.assertTrue(true);}AfterMethodpublic void afterMethod() {System.out.println(after Method);Assert.assertTrue(true);}Test()public void test() {System.out.println(Executing the test);Assert.assertTrue(true);}}
现在我们将在testng.xml文件下面运行看看会发生什么以及输出的打印顺序
suite namecodekrutest namecodekruclassesclass nameTest.CodekruTest //classes/test
/suite
输出-
before Suite
before Test
before Class
before Method
Executing the test
after Method
after Class
after Test
after Suite
codekru
Total tests run: 1, Failures: 0, Skips: 0