如何在 TestNG 中控制测试执行顺序?
一个 TestNG 类可以包含不同的测试,例如 test1、test2、test3 等。当用户运行包含各种测试的 TestNG 类时,它会根据提供的名称按字母顺序运行测试用例。但是,用户可以为这些测试分配优先级,以便这些测试可以按照用户的优先级运行。优先级从 0 开始,并按递增顺序排列。优先级 0 具有最高优先级,并且当优先级增加为 1、2、3 等时,优先级会降低。
在本文中,让我们分析如何以不同的方式控制执行顺序。
场景 1
如果 test2(优先级=0)、test1(优先级=1)、test3(优先级=2),则 test2 将首先运行,然后是 test1,依此类推,基于优先级。
解决此问题的方法/算法
步骤 1:导入 org.testng.annotations.Test 用于 TestNG。
步骤 2:编写一个注释为 @test 的注解。
步骤 3:为 @test 注解创建一个方法,例如 test1,并提供优先级=1。
步骤 4:分别为 test2 和 test3 重复步骤 3,优先级为 0 和 2。
步骤 5:现在创建 testNG.xml。
步骤 6:现在,运行 testNG.xml 或直接在 IDE 中运行 TestNG 类,或者使用命令行编译并运行它。
示例
以下代码用于创建一个 TestNG 类并显示执行的优先级顺序
import org.testng.annotations.Test; public class OrderofTestExecutionInTestNG { @Test(priority=1) public void test1() { System.out.println("Starting execution of TEST1"); } @Test(priority=0) public void test2() { System.out.println("Starting execution of TEST2"); } @Test(priority=2) public void test3() { System.out.println("Starting execution of TEST3"); }
输出
Starting execution of TEST2 Starting execution of TEST1 Starting execution of TEST3
场景 2
如果 test2(优先级=0)、test1(优先级=1)和 test3 没有优先级,则 test2 将首先运行,然后是 test3,最后是 test1。由于 test3 没有用户定义的优先级,TestNG 将其分配为优先级=0,并且在字母顺序中 test2 首先出现,然后是 test3。
解决此问题的方法/算法
步骤 1:导入 org.testng.annotations.Test 用于 TestNG。
步骤 2:编写一个注释为 @test 的注解。
步骤 3:为 @test 注解创建一个方法,例如 test1,并提供优先级=1。
步骤 4:分别为 test2 和 test 3 重复步骤 3,优先级为 0,并且不要提供任何优先级。
步骤 5:现在创建 testNG.xml。
步骤 6:现在,运行 testNG.xml 或直接在 IDE 中运行 TestNG 类,或者使用命令行编译并运行它。
示例
以下代码用于创建一个 TestNG 类并显示执行的优先级顺序
import org.testng.annotations.Test; public class OrderofTestExecutionInTestNG { @Test(priority=1) public void test1() { System.out.println("Starting execution of TEST1"); } @Test(priority=0) public void test2() { System.out.println("Starting execution of TEST2"); } @Test() public void test3() { System.out.println("Starting execution of TEST3"); }
输出
Starting execution of TEST2 Starting execution of TEST3 Starting execution of TEST1