如何在 TestNG 中运行测试组?
组测试是 TestNG 中一项新的创新功能,在 JUnit 框架中不可用。它允许您将方法划分为适当的部分,并执行测试方法的复杂分组。
您不仅可以声明属于组的方法,还可以指定包含其他组的组。然后,可以调用 TestNG 并要求它包含一组特定的组(或正则表达式),同时排除其他组。
组测试在您划分测试的方式上提供了最大的灵活性。如果您想连续运行两组不同的测试,则无需重新编译任何内容。
组是在您的 **testng.xml** 文件中使用 **<groups>** 标签指定的。它可以在 **<test>** 或 **<suite>** 标签下找到。在 **<suite>** 标签中指定的组适用于其下的所有 **<test>** 标签。
现在,让我们来看一个示例,了解组测试是如何工作的。
解决此问题的方法/算法 -
**步骤 1** - 创建两个 TestNG 类 - **NewTestngClass** 和 **OrderofTestExecutionInTestNG**。
**步骤 2** - 在这两个类中编写两种不同的 **@Test** 方法:**NewTestngClass** 和 **OrderofTestExecutionInTestNG**。
**步骤 3** - 如代码文件中所示,将每个 @Test 标记为组。
**步骤 4** - 现在创建如下所示的 **testNG.xml** 来执行具有组名称 **functest** 的 **@Test** 。
**步骤 5** - 运行 **testNG.xml** 或直接在 IDE 中运行 TestNG 类,或者使用命令行编译并运行它。
**步骤 6** - 根据给定的配置,它将执行 **NewTestngClass** 的测试用例 1 和 **OrderofTestExecutionInTestNG** 类的两个测试用例。
示例
以下代码展示了如何运行测试组 -
src/ NewTestngClass.java
import org.testng.annotations.Test; public class NewTestngClass { @Test(groups = { "functest", "checkintest" }) public void testCase1() { System.out.println("in test case 1 of NewTestngClass"); } @Test(groups = {"checkintest" }) public void testCase2() { System.out.println("in test case 2 of NewTestngClass"); } }
src/OrderofTestExecutionInTestNG.java -
import org.testng.annotations.Test; public class OrderofTestExecutionInTestNG { // test case 1 @Test(groups = { "functest" }) public void testCase3() { System.out.println("in test case 3 of OrderofTestExecutionInTestNG"); } // test case 2 @Test(groups = { "functest", "checkintest" }) public void testCase4() { System.out.println("in test case 4 of OrderofTestExecutionInTestNG"); } }
testng.xml
这是一个用于组织和运行 TestNG 测试用例的配置文件。当需要执行有限的测试而不是完整的套件时,它非常方便。
<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name = "Suite1"> <test name = "test1"> <groups> <run> <include name = "functest" /> </run> </groups> <classes> <class name = "NewTestngClass" /> <class name = "OrderofTestExecutionInTestNG" /> </classes> </test> </suite>
输出
in test case 1 of NewTestngClass in test case 3 of OrderofTestExecutionInTestNG in test case 4 of OrderofTestExecutionInTestNG =============================================== Suite1 Total tests run: 3, Passes: 3, Failures: 0, Skips: 0 ===============================================