TestNG 如何使用通配符在testng.xml中运行TestNG类
testng.xml的格式为<classes>
,其中我们定义了应该执行哪些测试类。在<classes>
中没有提供在类中提供正则表达式的具体方法。但有一些方法可以在一个测试套件中运行特定的@Test。TestNG在include、exclude和package标签中支持正则表达式。
以下是几种使用正则表达式在一个测试类中运行的便捷方法:
- 在
<classes>
中指定所有类名。在类内使用<methods>
和<include name =”test.*" />
。它将排除以test开头的所有测试。 -
如果类位于嵌套或不同的包中,则在
<packages><package name="common_package.*">
中使用包名称和正则表达式,将运行以common_package开头的所有类。
本文将讨论#1和#2。
方案1
使用正则表达式运行一个类中的特定方法。在这里,我们将有一个带有多个测试方法的类,并将看到如何配置testng.xml以仅运行基于正则表达式的几个测试。我们将运行所有以“test”开头的@Test。
步骤
- 步骤 1:创建一个TestNG类- NewTestngClass。
-
步骤 2:在类中编写3个不同的@Test方法-命名为test1,test2和findingAddition。
-
步骤 3:现在创建以下testNG.xml。
-
步骤 4:现在,在IDE中运行testNG.xml或直接运行testNG类,或者使用命令行编译和运行它。
示例
以下代码演示如何只运行一个大测试套件中的一个测试方法:
src/NewTestngClass.java
import org.testng.annotations.Test;
public class NewTestngClass {
@Test
public void testCase1() {
System.out.println("in test case 1 of NewTestngClass");
}
@Test
public void testCase2() {
System.out.println("in test case 2 of NewTestngClass");
}
@Test
public void findingAddition() {
System.out.println("in finding addition of NewTestngClass");
}
}
testng.xml
这是一个配置文件,用于组织和运行TestNG测试用例。
在只需要执行有限个测试用例而不是整个套件时非常方便。
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1" parallel = "none">
<test name = "test1" preserve-order = "true">
<classes>
<class name="NewTestngClass">
<methods>
<include name="test.*"/>
</methods>
</class>
</classes>
</test>
</suite>
输出
in test case 1 of NewTestngClass
in test case 2 of NewTestngClass
===============================================
Suite1
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================
方案2
使用正则表达式在类中运行特定的方法。这里,我们将有一个包,在该包中有多个类和多个测试方法,我们将看到如何配置testng.xml以根据正则表达式仅运行特定的包。我们将运行那些在以com开头的包中存在的类。
步骤
- 步骤1:在src下创建2个包,名称为com.test和com.work
- 步骤2:在com.test包中创建2个TestNG类,名称分别为NewTestngClass和OrderofTestExecutionInTestNG
- 步骤3:在这两个类中分别编写2个不同的@Test方法,名称分别为test1和test2
- 步骤4:现在创建以下testNG.xml文件
- 步骤5:现在在IDE中运行testNG.xml或直接运行testNG类,或使用命令行编译和运行它
示例
以下代码演示如何仅从一个大套件中运行一个测试方法:
src/com.test.NewTestngClass.java
import org.testng.annotations.Test;
public class NewTestngClass {
@Test
public void testCase1() {
System.out.println("in test case 1 of NewTestngClass");
}
@Test
public void testCase2() {
System.out.println("in test case 2 of NewTestngClass");
}
}
src/com.work.OrderofTestExecutionInTestNG.java:
package com.test.exclude.class;
import org.testng.annotations.Test;
public class OrderofTestExecutionInTestNG {
// test case 1
@Test
public void testCase3() {
System.out.println("in test case 3 of OrderofTestExecutionInTestNG");
}
// test case 2
@Test
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">
<packages>
<package name="com.*">
</package>
</packages>
</test>
</suite>
输出
in test case 1 of NewTestngClass
in test case 2 of NewTestngClass
in test case 3 of OrderofTestExecutionInTestNG
in test case 4 of OrderofTestExecutionInTestNG
===============================================
Suite1
Total tests run: 4, Passes: 4, Failures: 0, Skips: 0
=======================