如何在 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
===============================================

更新于: 2022-03-09

1K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告