# TestNG 教程

> 原文： [https://howtodoinjava.com/java-testng-tutorials/](https://howtodoinjava.com/java-testng-tutorials/)

TestNG 是一个受 JUnit 和 NUnit 启发的测试框架，但引入了一些新功能，使其更强大，更易于使用。 TestNG 旨在涵盖所有类别的测试：单元测试，功能测试，端到端测试，集成测试等等。

此页面列出了此博客中有关 TestNG 的所有可用教程。 在 TestNG 上发布新教程后，将立即更新此页面。

## 安装与配置

#### [将 TestNG 安装到 Eclipse 上并执行第一个测试](//howtodoinjava.com/testng/testng-tutorial-with-eclipse/ "TestNG Tutorial (With Eclipse)")

本教程详细讨论以下主题：

*   TestNG 的介绍
*   TestNG 的优点
*   将 TestNG 安装到 Eclipse
*   创建具有 TestNG 依赖项的 Java 项目
*   创建您的第一个 TestNG 类
*   运行 TestNG 测试

## 启用 TestNG

#### [注解教程](//howtodoinjava.com/testng/testng-annotations-tutorial/ "TestNG Annotations Tutorial")

TestNG 使用注解来帮助开发人员编写测试。 了解 TestNG 提供的所有注解及其简要说明。

#### [前后注解](//howtodoinjava.com/testng/testng-before-and-after-annotations/ "TestNG Before and After Annotations")

前后注解主要用于在执行测试方法之前和之后执行特定的代码集。 这些用于基本上在测试执行开始之前设置一些变量或配置，然后在测试执行结束之后清除所有这些内容。

#### [预期的异常和预期的消息](//howtodoinjava.com/testng/testng-expected-exception-and-expected-message-tutorial/ "TestNG – Expected Exception and Expected Message Tutorial")

在编写单元测试时，在某些情况下，我们需要验证在执行过程中程序是否引发了异常。 TestNG 提供了一种功能，可以通过允许用户指定在执行过程中预期由测试方法引发的异常类型来测试这种情况。 它支持为验证提供多个值。 如果测试引发的异常不属于用户输入列表，则测试方法将标记为失败。

#### [如何禁用/忽略测试方法](//howtodoinjava.com/testng/testng-how-to-disableignore-test-method/ "TestNG – How to disable/ignore test method")

在执行 TestNG 测试时，在某些情况下，您可能不得不禁用特定的测试或一组测试才能执行。 例如，考虑由于某些测试属于某些无法执行的场景而导致功能中存在严重错误的场景。 由于问题已经被发现，我们可能需要禁用上述测试方案。

#### [超时测试](//howtodoinjava.com/testng/testng-timeout-test-tutorial/ "TestNG – Timeout Test Tutorial")

在运行测试时，某些情况下可能会卡住某些测试，或者可能花费比预期更长的时间。 在这种情况下，您可能需要将所述测试用例标记为失败，然后继续。 在本教程中，我们将学习将 TestNG 测试配置为在某些配置的持续时间后超时。

#### [通过`testng.xml`和`@Parameters`注解传递参数](//howtodoinjava.com/testng/testng-test-parameters-through-testng-xml-and-parameters-annotation/ "TestNG – Test Parameters through testng.xml and @Parameters Annotation")

TestNG 的重要功能之一是参数化。 此功能允许用户将参数值作为参数传递给测试方法。 通过使用`@Parameters`注解支持此功能。

## 高级概念

#### [通过`@DataProvider`传递参数](//howtodoinjava.com/testng/testng-test-parameters-through-dataprovider/ "TestNG – Test Parameters through @DataProvider") 

TestNG 提供的一个重要功能是`DataProvider`功能。 它可以帮助您编写数据驱动的测试，这实际上意味着同一测试方法可以针对不同的数据集多次运行。 它有助于为测试方法提供复杂的参数，因为不可能从 XML 做到这一点。

#### [测试组，元组，默认组示例](//howtodoinjava.com/testng/testng-test-groups-meta-group-default-group-examples/ "TestNG – Test Groups, Meta Group, Default Group Examples")

分组测试方法是 TestNG 最重要的功能之一。 在 TestNG 中，用户可以将多种测试方法分组为一个命名组。 您还可以执行属于一个或多个组的一组特定的测试方法。 此功能允许将测试方法分为不同的部分或模块。

了解本教程中的以下主题：

*   分组测试示例
*   通过 Eclipse 运行 TestNG 组
*   通过`testng.xml`运行 TestNG 组
*   编写属于多个组的测试
*   包括和排除组
*   使用正则表达式
*   默认组
*   组群

#### [依赖测试示例](//howtodoinjava.com/testng/testng-dependent-tests-examples/ "TestNG – Dependent Tests Examples")

依赖项是 TestNG 中的一项功能，它允许测试方法依赖于单个或一组测试方法。 这将有助于执行要在测试方法之前执行的一组测试。 仅当“依赖方法”是同一类或任何继承的基类的一部分（即在扩展类时）时，方法依赖才有效。

#### [`@Factory`注解](//howtodoinjava.com/testng/testng-factory-annotation-tutorial/ "TestNG – @Factory Annotation Tutorial")

了解 TestNG 提供的`@Factory`注解。 `@Factory`允许根据某些数据集或条件在运行时创建测试。

#### [`@Factory`和`@DataProvider`之间的区别](//howtodoinjava.com/testng/testng-difference-between-factory-and-dataprovider/ "TestNG – Difference between @Factory and @DataProvider")

在学习 TestNG 时，许多人在阅读`@DataProvider`和`@Factory`注解时会感到困惑 - 什么时候使用什么？ 还有什么更好的呢？ 让我们看看它们的两个功能。

#### [执行并行测试](//howtodoinjava.com/testng/testng-executing-parallel-tests/ "TestNG – Executing Parallel Tests")

在软件方面，并行性或多线程定义为软件，操作系统或程序同时执行另一个程序的多个部分或子组件的能力。 TestNG 允许测试以并行或多线程模式运行。 这意味着基于测试套件的配置，不同的线程将同时启动，并在其中执行测试方法。 与正常执行相比，这给用户带来了很多优势，主要是减少了执行时间和验证多线程代码的能力。

了解以下主题：

*   并行测试执行的优势
*   并行运行测试方法
*   并行运行测试类
*   在套件中并行运行测试
*   配置测试方法以在多个线程中运行

#### [使用 Maven 构建](//howtodoinjava.com/testng/how-to-execute-testng-tests-with-maven-build/ "How to Execute TestNG Tests With Maven Build")执行 TestNG 测试

了解如何使用 Maven 构建文件（即`pom.xml`文件）执行 TestNG 测试。 如果您打算使测试自动化并使它们成为项目构建过程本身的一部分，则此知识很重要。

**祝您学习愉快！**