TestNG 如何在testng.xml中按名称和通配符运行类
testng.xml的格式为<classes>
,我们在其中定义了应该执行的所有测试类。在<classes>
中提供正则表达式的特定方法是不存在的。但是有一些解决方案可以用来运行特定类中的特定@Test方法。TestNG支持在include、exclude和package标签中使用正则表达式。
在这里,问题是当用户想要运行只有特定格式的类时,即类的初始名称相同。例如,用户想要运行所有名称以NewTest开头的类。
在本教程中,我们将讨论如何运行所有名称以NewTest开头的类。
解决上述问题的方法可能是使用beanshell脚本。用户可以在testng.xml中使用<method− selectors>
标签而不是<classes>
标签来提供一个简单的代码。它将在运行时评估并提取应该运行的类名。
步骤
- 步骤1:创建3个TestNG类-NewTestngClass、NewTestNGClass1和OrderofTestExecutionInTestNG。
-
步骤2:在所有类中编写一个@Test方法。
-
步骤3:现在创建如下所示的testNG.xml。
-
步骤4:现在,运行testNG.xml或直接在IDE中运行testNG类,或使用命令行进行编译和运行。
示例
以下代码显示如何仅运行大套件中的1个测试方法:
src/NewTestngClass.java
import org.testng.annotations.Test;
public class NewTestngClass {
@Test
public void testCase1() {
System.out.println("in test case 1 of NewTestngClass");
}
}
src/ NewTestngClass1.java
import org.testng.annotations.Test;
public class NewTestngClass {
@Test
public void testCase1() {
System.out.println("in test case 1 of NewTestngClass1");
}
}
src/ NewTestngClass.java
import org.testng.annotations.Test;
public class OrderofTestExecutionInTestNG {
@Test
public void testCase1() {
System.out.println("in test case 1 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" parallel = "none">
<test name = "test1" preserve-order = "true">
<method-selectors>
<method-selector>
<script language="beanshell"><
![CDATA[
method.getDeclaringClass().getSimpleName().startsWith("NewTest")
]]>
</script>
</method-selector>
</method-selectors>
</test>
</suite>
输出
in test case 1 of NewTestngClass
in test case 1 of NewTestngClass1
===============================================
Suite1
Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
===============================================