TestNG 如何使用通配符在testng.xml中运行TestNG类

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
=======================

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程