📜  如何使用 TestNG 运行一组测试用例? (1)

📅  最后修改于: 2023-12-03 15:08:24.351000             🧑  作者: Mango

如何使用 TestNG 运行一组测试用例?

TestNG 是一个功能丰富的测试框架,它能够让我们使用注解来编写测试用例,并且支持 testng.xml 文件作为测试运行配置文件。本文将介绍如何使用 TestNG 运行一组测试用例。

1. 安装 TestNG

首先我们需要安装 TestNG,可以通过 maven 直接在项目中引入 TestNG:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.3.0</version>
    <scope>test</scope>
</dependency>

或者下载 TestNG jar 包,将其添加到项目中。

2. 编写测试用例

TestNG 支持使用注解编写测试用例,常用的注解包括:

  • @Test:表示该方法是一个测试用例。
  • @BeforeSuite:在测试套件(testng.xml)中所有测试运行之前运行。
  • @AfterSuite:在测试套件(testng.xml)中所有测试运行之后运行。
  • @BeforeClass:在类中第一个测试方法运行之前运行。
  • @AfterClass:在类中所有测试方法运行之后运行。
  • @BeforeMethod:在每个测试方法运行之前运行。
  • @AfterMethod:在每个测试方法运行之后运行。

举个例子,我们可以创建一个名为 MyTest 的测试类,其中包含一个测试方法 add:

package com.example.test;

import org.testng.annotations.Test;

public class MyTest {
 
    @Test
    public void add() {
        int result = 1 + 2;
        assert result == 3;
    }
}
3. 创建测试运行配置文件 testng.xml

在项目根目录下创建 testng.xml 文件,并在其中配置测试类和测试方法,示例如下:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="MyTest Suite">
    <test name="MyTest">
        <classes>
            <class name="com.example.test.MyTest"/>
        </classes>
    </test>
</suite>
4. 运行测试

有多种方式来运行测试,这里介绍两种:

4.1. 使用 TestNG Maven 插件

在 pom.xml 中添加 TestNG Maven 插件,示例如下:

<plugins>
    <!-- ... -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.0.0-M5</version>
        <configuration>
            <suiteXmlFiles>
                <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
        </configuration>
    </plugin>
</plugins>

在命令行执行 mvn test 即可运行测试。

4.2. 使用 TestNG 命令行工具

首先需要下载 TestNG jar 包,并将其添加到 classpath 中。然后在命令行执行:

java org.testng.TestNG testng.xml

即可运行测试。我们也可以在创建一个运行测试的类,在类中编写如下代码:

package com.example.test;

import org.testng.TestNG;
import org.testng.collections.Lists;

public class TestRunner {
    public static void main(String[] args) {
        TestNG testng = new TestNG();
        List<String> suites = Lists.newArrayList();
        suites.add("testng.xml");
        testng.setTestSuites(suites);
        testng.run();
    }
}

在命令行执行 java com.example.test.TestRunner 运行测试。

5. 结果报告

TestNG 运行测试后会生成一个结果报告,默认生成在 test-output 文件夹下。我们可以在 testng.xml 中配置报告类型和路径:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="MyTest Suite">
    <listeners>
        <listener class-name="org.testng.reporters.EmailableReporter"/>
        <listener class-name="org.testng.reporters.jq.Main"/>
    </listeners>
    <test name="MyTest">
        <classes>
            <class name="com.example.test.MyTest"/>
        </classes>
    </test>
    <reporters>
        <reporter type="emailable" output-directory="test-output"/>
        <reporter type="xml" output-directory="test-output"/>
        <reporter type="html" output-directory="test-output"/>
    </reporters>
</suite>

其中 <listeners> 标签用于配置报告格式化器,<reporters> 标签用于配置报告生成方式和路径。