原文:HowToDoInJava
协议:CC BY-NC-SA 4.0
原文: https://howtodoinjava.com/java-testng-tutorials/
TestNG 是一个受 JUnit 和 NUnit 启发的测试框架,但引入了一些新功能,使其更强大,更易于使用。 TestNG 旨在涵盖所有类别的测试:单元测试,功能测试,端到端测试,集成测试等等。
此页面列出了此博客中有关 TestNG 的所有可用教程。 在 TestNG 上发布新教程后,将立即更新此页面。
将 TestNG 安装到 Eclipse 上并执行第一个测试
本教程详细讨论以下主题:
- TestNG 的介绍
- TestNG 的优点
- 将 TestNG 安装到 Eclipse
- 创建具有 TestNG 依赖项的 Java 项目
- 创建您的第一个 TestNG 类
- 运行 TestNG 测试
注解教程
TestNG 使用注解来帮助开发人员编写测试。 了解 TestNG 提供的所有注解及其简要说明。
前后注解
前后注解主要用于在执行测试方法之前和之后执行特定的代码集。 这些用于基本上在测试执行开始之前设置一些变量或配置,然后在测试执行结束之后清除所有这些内容。
预期的异常和预期的消息
在编写单元测试时,在某些情况下,我们需要验证在执行过程中程序是否引发了异常。 TestNG 提供了一种功能,可以通过允许用户指定在执行过程中预期由测试方法引发的异常类型来测试这种情况。 它支持为验证提供多个值。 如果测试引发的异常不属于用户输入列表,则测试方法将标记为失败。
如何禁用/忽略测试方法
在执行 TestNG 测试时,在某些情况下,您可能不得不禁用特定的测试或一组测试才能执行。 例如,考虑由于某些测试属于某些无法执行的场景而导致功能中存在严重错误的场景。 由于问题已经被发现,我们可能需要禁用上述测试方案。
超时测试
在运行测试时,某些情况下可能会卡住某些测试,或者可能花费比预期更长的时间。 在这种情况下,您可能需要将所述测试用例标记为失败,然后继续。 在本教程中,我们将学习将 TestNG 测试配置为在某些配置的持续时间后超时。
通过和注解传递参数
TestNG 的重要功能之一是参数化。 此功能允许用户将参数值作为参数传递给测试方法。 通过使用注解支持此功能。
通过传递参数
TestNG 提供的一个重要功能是功能。 它可以帮助您编写数据驱动的测试,这实际上意味着同一测试方法可以针对不同的数据集多次运行。 它有助于为测试方法提供复杂的参数,因为不可能从 XML 做到这一点。
测试组,元组,默认组示例
分组测试方法是 TestNG 最重要的功能之一。 在 TestNG 中,用户可以将多种测试方法分组为一个命名组。 您还可以执行属于一个或多个组的一组特定的测试方法。 此功能允许将测试方法分为不同的部分或模块。
了解本教程中的以下主题:
- 分组测试示例
- 通过 Eclipse 运行 TestNG 组
- 通过运行 TestNG 组
- 编写属于多个组的测试
- 包括和排除组
- 使用正则表达式
- 默认组
- 组群
依赖测试示例
依赖项是 TestNG 中的一项功能,它允许测试方法依赖于单个或一组测试方法。 这将有助于执行要在测试方法之前执行的一组测试。 仅当“依赖方法”是同一类或任何继承的基类的一部分(即在扩展类时)时,方法依赖才有效。
注解
了解 TestNG 提供的注解。 允许根据某些数据集或条件在运行时创建测试。
和之间的区别
在学习 TestNG 时,许多人在阅读和注解时会感到困惑 - 什么时候使用什么? 还有什么更好的呢? 让我们看看它们的两个功能。
执行并行测试
在软件方面,并行性或多线程定义为软件,操作系统或程序同时执行另一个程序的多个部分或子组件的能力。 TestNG 允许测试以并行或多线程模式运行。 这意味着基于测试套件的配置,不同的线程将同时启动,并在其中执行测试方法。 与正常执行相比,这给用户带来了很多优势,主要是减少了执行时间和验证多线程代码的能力。
了解以下主题:
- 并行测试执行的优势
- 并行运行测试方法
- 并行运行测试类
- 在套件中并行运行测试
- 配置测试方法以在多个线程中运行
使用 Maven 构建执行 TestNG 测试
了解如何使用 Maven 构建文件(即文件)执行 TestNG 测试。 如果您打算使测试自动化并使它们成为项目构建过程本身的一部分,则此知识很重要。
祝您学习愉快!
原文: https://howtodoinjava.com/testng/testng-tutorial-with-eclipse/
您可能知道测试的过程是根据预期的工作方式来验证和验证某个软件或硬件是否在工作。 测试是软件开发生命周期(SDLC)的重要组成部分,因为它有助于提高开发产品的质量。 测试有多种类型和级别,例如白盒,黑盒,单元,集成,系统,验收,性能,安全性,功能,非功能性等等。 这些类型的测试中的每一种都是使用自动化工具手动完成或通过自动化完成的。
顾名思义,测试自动化是指自动化测试过程。 测试自动化具有以多种方式运行测试的优势,例如以固定的间隔或作为应用构建的一部分。 这有助于在开发本身的初始阶段识别错误,从而缩短了产品时间线并提高了产品质量。 它还有助于减少重复的手动测试工作,并使手动测试团队能够专注于测试新功能和复杂场景。
TestNG,其中 NG 代表“下一代”,是受 JUnit (Java)和 NUnit(C#)启发的测试自动化框架。 它可以用于单元,功能,集成和端到端测试。 TestNG 在短时间内获得了很大的普及,并且是 Java 开发人员中使用最广泛的测试框架之一。 它主要使用 Java 注解来配置和编写测试方法。
TestNG 在 JUnit4 上具有的一些功能是:
- 额外的之前和之后注解,例如“之前/之后”套件和“之前/之后”组
- 依赖项测试
- 测试方法分组
- 多线程执行
- 内置报告框架
它是用 Java 编写的,可以与 Java 以及与 Java 相关的语言(例如 Groovy)一起使用。 在 TestNG 中,套件和测试主要通过 XML 文件进行配置或描述。 默认情况下,文件的名称是,但是如果需要,我们可以给它提供任何其他名称。 TestNG 允许用户通过 XML 文件进行测试配置,并允许他们在测试套件中包括(或排除)各自的程序包,类和方法。 它还允许用户将测试方法分组为特定的命名组,并将其包括或排除为测试执行的一部分。
现在,让我们发现 TestNG 提供的更多功能/优势。
- 多个前后注解选项
- 基于 XML 的测试配置和测试套件定义
- 相关方法
- 小组/小组
- 依赖群体
- 测试方法的参数化
- 数据驱动的测试
- 多线程执行
- 更好的报告
我们将在接下来的教程中更详细地讨论这些功能。
在我们可以下载并开始使用 TestNG 之前,请确保您的系统上已安装 Java JDK5 或更高版本。 还要确保在系统路径中设置了 JDK。
如果您只想下载 TestNG JAR,可以从以下 URL 获取:
TestNG Jar – http://testng.org/testng-6.8.zip
现在,让我们开始将 TestNG 安装到 Eclipse 上。 我将尝试捕获该过程中的所有步骤。
1)打开您的 Eclipse 应用。
2)转到“帮助 | 安装新软件”。
3)单击“使用”文本框旁边的“添加…”按钮。
4)在名称框中输入 TestNG 站点,在位置中输入 URL 。 完成后,单击“确定”按钮。
5)单击确定,将 TestNG 更新站点添加到 Eclipse。 可用的软件窗口将显示可在 TestNG 站点下下载的工具。
6)选择 TestNG,然后单击“Next”。
7)Eclipse 将计算下载所选 TestNG 插件的软件要求,并显示“安装详细信息”屏幕。 在详细信息屏幕上单击“下一步”。
8)接受许可信息,然后单击“完成”。 这将开始将 TestNG 插件下载并安装到 Eclipse。
9)如果出现以下警告窗口,请单击“确定”按钮。
10)安装完成后,Eclipse 将提示您重新启动它。 在窗口提示上单击“是”。
11)重新启动 Eclipse 后,通过转至“窗口 | 偏好”来验证 TestNG 插件的安装。 您将在首选项窗口下看到一个 TestNG 部分。
我们已成功将 TestNG 插件安装到 Eclipse 安装中。 这将帮助我们使用 Eclipse 执行 TestNG 测试或套件。
在编写第一个 TestNG 测试之前,我们必须在 Eclipse 中创建一个 Java 项目并添加我们的 TestNG 测试依赖项。
1)转到“文件 | 新增 | 其他”。 将显示一个带有多个选项的窗口。
2)选择 Java 项目,如以下屏幕截图所示,然后单击“下一步”。
3)在下一个屏幕上,输入 Java 项目的项目名称,例如,如以下屏幕截图所示,然后单击“完成”:
这将在 Eclipse 中创建一个新的 Java 项目。
4)现在转到“项目 | 属性”。 在“属性”窗口左侧选择“Java 构建路径”,如以下屏幕截图所示。 这将显示新创建的项目的构建路径。
5)单击库选项卡,然后单击“添加库…”选项。
6)在“添加库”窗口中选择 TestNG,如以下屏幕截图所示,然后单击“下一步”:
7)在下一个窗口中单击“完成”。 这会将 TestNG 库添加到您的 Eclipse 项目中。
太好了,我们已经在 Eclipse 中成功创建了一个新的 Java 项目,并将 TestNG 库添加到了项目的构建路径。
执行以下步骤来创建您的第一个 TestNG 类:
1)转到“文件 | 新增 | 其他”。 这将在 Eclipse 中打开一个新的“添加”向导窗口。
2)从“添加”向导窗口中选择 TestNG 类,然后单击“下一步”。
3)在下一个窗口上,单击“浏览”按钮,然后选择需要在其中添加类的 Java 项目。
4)输入包名称和测试类名称,然后单击“完成”。
5)此窗口还为您提供了一个选项,可以在创建新的 TestNG 类时选择不同的注解。 如果选择,则插件将在生成类时为这些注解生成伪方法。 这将为您的项目添加一个新的 TestNG 类。
我们已成功将新的 TestNG 测试类添加到 Eclipse 中新创建的 Java 项目中。 随时根据需要修改代码。 现在,让我们通过 Eclipse 运行新创建的测试类。
执行以下步骤以通过 Eclipse 运行测试:
1)在 Eclipse 中选择 Java 项目,然后转到“运行 | 运行配置”。
2)在给定的选项中选择 TestNG,然后单击“新建”按钮以创建新配置。
3)请注意,TestNG 插件提供了多个用于运行测试用例的选项,如下所示:
- 类:使用此选项,您可以提供类名称和程序包,以仅运行所述特定测试类。
- 方法:使用此方法,您只能在测试类中运行特定的方法。
- 组:如果您想运行属于特定 TestNG 组的特定测试方法,则可以在此处输入用于执行它们的方法。
- 包:如果要在包中执行所有测试,则可以在此框中指定这些测试。
- 套件:如果您具有文件形式的套件文件,则可以在此处选择要执行的文件。
让我们输入配置名称,然后在“类”部分下选择新创建的类,然后单击“应用”。
4)现在,如果您想运行新创建的配置,只需在单击“应用”之后单击“运行”。 这将编译并运行我们编写的 TestNG 测试类。 测试执行的结果显示在 Eclipse 的“控制台”和“结果”窗口中,如以下屏幕快照所示。
您还可以通过选择测试类,然后右键单击它,从菜单中选择“运行方式”,然后选择“TestNG 测试”,来运行测试类。
在 TestNG 教程中,我们了解了 TestNG,TestNG 提供的功能,将 TestNG 插件安装到 Eclipse 中以及通过 Eclipse 编写和执行 TestNG 测试类。
在接下来的教程中,我们将学习 TestNG 的更多高级功能。
祝您学习愉快!
参考:http://testng.org/
原文: https://howtodoinjava.com/testng/how-to-execute-testng-tests-with-maven-build/
在此 testng maven 示例中,我们将学习如何使用 maven 构建文件执行 testng 测试。 如果您打算自动执行测试测试,并使它们成为项目构建过程本身的一部分,则此知识很重要。
以下是我们已经在两个先前教程中编写的两个测试。
让我们看看两个测试的 testng 套件文件和。
在项目根目录下的下添加。 下面给出的文件为 maven 构建项目定义了不同的配置。 每个部分的功能已在代码中作为内联注解提及。
Maven 可以与任何连续集成系统一起使用。 插件用于配置和执行测试。 这里,所述插件用于为 TestNG 测试配置和并生成测试报告。
插件用于帮助编译代码并使用特定的 JDK 版本进行编译。
现在在命令提示符下使用命令“”在文件上方执行。 您将获得以下结果。
随时在文件上方添加/更新,以满足您的需求。
学习愉快!
原文: https://howtodoinjava.com/testng/testng-annotations-tutorial/
TestNG 使用注解来帮助开发人员编写测试。 下表是包含有关 TestNG 提供的所有注解的信息及其简要说明的表。 我将在针对其用法的单独教程中详细介绍它们。
当您感到困惑时,请参考 TestNG 注解的表格。
祝您学习愉快!
原文: https://howtodoinjava.com/testng/testng-expected-exception-and-expected-message-tutorial/
在编写单元测试时,在某些情况下,我们需要验证在执行过程中程序是否引发了异常。 通过允许用户指定在执行过程中测试方法引发的异常类型,TestNG 提供了一种测试此类情况的功能。 它支持为验证提供多个值。 如果测试引发的异常不属于用户输入列表,则测试方法将标记为失败。
让我们创建一个示例测试,并了解异常测试如何在 TestNG 中工作。
让我们看一个例子,以更好地理解它。
在下面的测试中,我们有两种测试方法,即和。 这里抛出,而抛出。 在使用注解时,使用属性值提到了在运行这些测试时验证的预期异常。
以上测试运行的输出如下:
从测试结果中可以看出,在执行期间被 TestNG 标记为失败。 测试失败,因为所述方法引发的异常与列表中提供的异常列表不匹配。
您还可以根据测试引发的异常消息来验证测试。 正则表达式也可以用于验证错误消息,可以使用完成此操作,具体取决于正则表达式的位置,我们可以在验证异常消息时使用它进行模式匹配,例如开始,包含,结束于。
让我们学习如何根据抛出的异常消息编写异常测试。
以上测试运行的输出如下:
在上述测试方法中,失败,因为预期的消息不匹配。
祝您学习愉快!
原文: https://howtodoinjava.com/testng/testng-how-to-disableignore-test-method/
在执行 TestNG 测试时,可能在某些情况下可能需要禁用特定测试或一组测试才能执行。 例如,考虑由于某些测试属于某些无法执行的场景而导致功能中存在严重错误的场景。 由于问题已经被发现,我们可能需要禁止执行上述测试方案。
禁用 TestNG 中的测试可以通过将注解的属性设置为来实现。 这将使所述测试方法无法作为测试套件的一部分执行。 如果在类级别为注解设置了此属性,则将禁用该类内的所有公共方法。
让我们看一个例子,以更好地理解它。
在下面的测试中,我们有三种测试方法,即,和。 其中需要禁用。
以上测试运行的输出如下:
如您在前面的结果中所看到的,TestNG 仅执行了两种方法。 测试执行将忽略属性启用值为的方法。 默认情况下,属性启用值为,因此即使未指定属性值,您也可以看到名称为的测试方法已由 TestNG 执行。
学习愉快!
原文: https://howtodoinjava.com/testng/testng-executing-parallel-tests/
TestNG 并行执行测试,类和套件以及示例。 了解如何在多个线程中并行或单个运行 testng 测试和套件。
在软件方面,并行性或多线程定义为软件,操作系统或程序同时执行另一个程序的多个部分或子组件的能力。 TestNG 允许测试以并行或多线程模式运行。 这意味着基于测试套件的配置,不同的线程将同时启动,并在其中执行测试方法。 与正常执行相比,这给用户带来了很多优势,主要是减少了执行时间和验证多线程代码的能力。
并行或多线程执行可以为用户提供很多优势。 以下是两个:
- 减少了执行时间 – 并行执行测试时,会同时执行多个测试,因此减少了执行测试所需的总时间。
- 允许多线程测试 – 使用此功能,我们可以编写测试来验证应用中的某些多线程代码。
并行测试执行被 QA 行业广泛用于功能自动化测试。 此功能可帮助质量检查人员配置其测试,以使其易于同时在多个浏览器或操作系统中执行。
在 TestNG 中可以使用多种不同的方式配置并行功能。
TestNG 提供了多种方法在多线程条件中执行测试,其中一种方法是在单个线程中执行每种测试方法。 此模式显着减少了执行时间,因为可以并行执行更多测试,从而减少了总执行时间。
testng 中用于并行测试执行的 Java 程序。 这是一个如何使用单个类文件中的并行运行方法的示例。
前面的测试类包含两个测试方法,它们在执行时将消息打印到控制台上。 使用代码求值正在执行当前方法的线程的 ID。
它还包含和方法,它们在执行时还将当前线程的线程 ID 打印到控制台上。
在项目下创建一个名为的新文件,并编写以下代码。
在 Eclipse 中选择此文件并将其作为 TestNG 套件运行。 您将在“控制台”窗口中看到以下测试结果:
注意,上一个屏幕截图中显示的值在控制台输出中可能会不同。 值是在执行期间由 Java 虚拟机(JVM)在运行时分配的。
先前的测试结果清楚地表明,每种测试方法及其各自的和方法都是在不同的线程中执行的。 这由控制台上打印的线程的 ID 标识。
在此示例中,我们将了解并行执行 testng 测试类; 属于测试执行的每个测试类都将在其自己的线程中执行。
在项目下创建一个名为的新文件,并编写以下代码。
在 Eclipse 中选择此文件并将其作为 TestNG 套件运行。 您将在“控制台”窗口中看到以下测试结果:
先前的测试结果清楚地表明,每个测试类及其各自的和方法都是在不同的线程中执行的。 这由控制台上打印的线程的 ID 标识。
让我们学习一下在套件中并行执行每个测试,也就是说,作为测试套件执行一部分的每个测试都将在各自独立的线程中执行。
在项目下创建一个名为的新文件,并编写以下代码。
在 Eclipse 中选择此文件并将其作为 TestNG 套件运行。 您将在“控制台”窗口中看到以下测试结果:
先前的测试结果清楚地表明,套件中的每个测试都在其各自的线程中执行。 这由控制台上打印的线程的标识。
前面我们讨论了如何以并行或多线程模式运行类,方法和测试。 TestNG 还提供了灵活性,可以配置要在多线程环境中运行的测试方法。 这是通过在方法上使用注解时对其进行配置来实现的。
通过使用属性以及“测试”注解,该方法被配置为在多线程模式下运行。 的值设置为 3; 这将测试方法配置为在三个不同的线程中运行。
其他两个属性和,将测试配置为多次调用,并且如果执行花费很多,则失败 更多时间。
在项目下创建一个名为的新文件,并编写以下代码。
在 Eclipse 中选择此文件并将其作为 TestNG 套件运行。 您将在“控制台”窗口中看到以下测试结果:
在此,根据属性值多次执行测试方法。 每次执行均在单独的线程中完成,该线程从测试报告输出中清晰可见。 当您只想在多线程模式下而不是整个测试套件中运行固定数量的测试方法时,此功能很有用。
学习愉快!
原文: https://howtodoinjava.com/testng/testng-dependent-tests-examples/
依赖项是 TestNG 中的一项功能,它允许测试方法依赖于单个或一组测试方法。 这将有助于执行一组要在测试方法之前执行的测试。 仅当“依赖方法”是同一类或任何继承的基类的一部分时(即,在扩展类时),方法依赖才有效。
在本教程中,我们将学习如何在 TestNG 中创建依赖测试。
TestNG 允许您创建一个示例测试方法,该方法依赖于同一类的另一个测试方法。
前面的测试类包含两个测试方法,这些方法在执行时将消息名称打印到控制台上。 在此,测试方法取决于测试方法。 在使用注解时,通过使用属性进行配置。
现在开始运行测试。
在上面的测试结果中,您可以看到在测试方法一消息之前打印了测试方法二消息。 这表明方法在之后执行,因为它取决于。
有时,可能需要一种测试方法依赖于其他多种方法。 作为依赖项支持的一部分,TestNG 很好地支持了此功能。
前面的测试类包含三种测试方法,这些方法在执行时会将消息名称打印到控制台上。 这里的测试方法取决于测试方法和。 在使用注解时,通过使用属性进行配置。
现在开始运行测试。
通过查看控制台消息,我们可以看到方法和在之前执行。
到目前为止,我们已经看到了相关测试方法属于同一类的示例。 只能针对属于同一类或任何继承的基类的测试方法提及对测试方法的依赖项。 让我们看看当依赖方法是继承的基类的一部分时,TestNG 如何执行测试方法。
前面的测试类包含两个测试方法,这些方法在执行时将消息名称打印到控制台上。 这里的测试方法取决于测试方法。 在使用注解时,通过使用属性 进行配置。
现在开始运行测试。
从测试结果中可以看出,执行的顺序为,,,最后是。 由于依赖于和,因此 TestNG 根据相关性执行所有测试方法,最后根据各自的测试方法执行所有测试方法。
与依赖方法类似,TestNG 还允许测试方法依赖组。 这样可以确保在依赖测试方法之前执行一组测试方法。
前面的测试类包含两个测试方法,这些方法在执行时将消息名称打印到控制台上。 这里,测试方法取决于测试方法。 这是通过在使用注解时使用属性来配置的。
现在开始运行测试。
方法依赖项仅适用于属于同一类或一个继承的类中的其他方法,但不适用于不同类。 如果您需要一个存在于单独类中的测试方法,请执行以下操作: 您可以通过将所述测试方法分配给一个组并将依赖测试方法配置为依赖于该组来实现。
这些都与 TestNG 中的相关测试有关。 让我知道您是否有任何疑问。
学习愉快!
原文: https://howtodoinjava.com/testng/testng-timeout-test-tutorial/
在运行测试时,某些情况下可能会卡住某些测试,或者可能花费比预期更长的时间。 在这种情况下,您可能需要将所述测试用例标记为失败,然后继续。 在本教程中,我们将学习将 TestNG 测试配置为在某些配置的持续时间后超时。
TestNG 允许用户设置时间段,以等待测试完全执行。 超时可以通过两种方式配置:
- 在套件级别:这将适用于上述 TestNG 测试套件中的所有测试
- 在每个测试方法级别:这将适用于所述测试方法,并且如果在套件级别配置,则将覆盖时间段
要指定超时持续时间,请使用注解的“”属性。
让我们创建一个示例测试,并了解 TimeNG 在 TestNG 中的工作原理。
在下面的测试中,我们有两种测试方法,即和。 将需要 1000 毫秒才能完全执行,而将需要 400 毫秒才能完全执行。 我们已经使用方法来强制执行时间。
现在将文件添加到项目根目录,并将以下代码放入其中。 该代码将超时时间定义为 500ms。
现在使用运行以上测试。 以上测试运行的输出如下:
从测试结果中可以看出,只有被执行,因为它的执行时间少于文件中定义的超时时间。 执行被取消,因为完成所需的时间超过配置的超时时间。
现在开始学习在测试方法级别设置超时的方法。
如前所述,您也可以在方法级别指定超时。 这将使您可以灵活地给每个单独的测试方法特定的运行时间。
以上测试运行的输出如下:
在上述测试方法中,失败,因为它未在指定的超时时间内完全执行。
祝您学习愉快!
原文: https://howtodoinjava.com/eclipse/how-to-import-maven-remote-archetype-catalogs-in-eclipse/
本教程为在 Eclipse 中导入 Maven 远程原型目录提供了简单的说明,以使您在配置项目时获得领先。 使用原型自动导入所有基本的运行时依赖项,并使用最基本的配置来配置项目,您可以在数分钟内直接将其直接用于构建 HelloWorld 应用。
转到“Windows -> Preferences -> Maven -> Archetypes”。
Eclipse 中的 Maven 原型选项
单击添加远程目录按钮。 将目录文件填写为“”和一些自定义描述。
填写原型网址和名称
单击确定按钮。 大功告成。
为了验证您现在可以访问所有原型,请创建一个新的 maven 项目。
选择您创建的新的自定义目录。
Jersey 远程原型
第一次,将花费一些时间来收集所有原型。 您可以在 IDE 的右下角看到进度。 完成后,您应该可以看到原型。
填写项目的组 ID 和工件 ID。
填写组 ID 和工件 ID
单击确定以创建项目。 您将在工作区上看到已完成所有依赖项和基本配置的新项目创建。
具有自动配置的新 Maven 项目
如果您在任何步骤中遇到任何问题,请随时向我提问。
祝您学习愉快!
原文: https://howtodoinjava.com/testng/testng-parameters/
TestNG 的重要功能之一是参数化。 此功能允许用户将参数作为参数传递给测试。 通过使用 testng 注解支持此功能。
我们可以通过两种方式为 testng 测试提供参数值。
- 通过 XML 配置文件
- 通过
注解可用于任何,,和注解方法。 它可以用于初始化变量并将其用于类,测试中,也可以用于整个测试执行。
如果需要在运行时将一些简单的值(例如类型)传递给测试方法,则可以使用这种通过 testng XML 配置文件发送参数值的方法。 您必须使用注解将参数值传递给测试方法。
让我们编写一个简单的示例,通过 XML 配置文件将参数传递给测试方法。
1.1 测试
在下面的测试中,我们创建了一个包含多个方法的测试类,这些方法接受来自 testng 的参数。 在 testng XML 文件中的套件级别和测试级别都设置了参数值。
如果在套件级别定义,则在测试级别定义的任何参数值都将覆盖具有相同名称的参数值。 您可以在测试方法的测试三中看到这一点。
1.2
现在将文件添加到项目根目录,并将以下代码放入其中。 在这里,我们定义要传递的参数值。
1.3 演示
现在使用运行以上测试。 以上测试运行的输出如下:
从测试结果中可以看出,只有被执行,因为它的执行时间少于文件中定义的超时时间。 执行被取消,因为完成所需的时间超过配置的超时时间。
TestNG 还提供了提供可选参数的选项,如果在定义的文件中找不到参数值,则将使用此值。
2.1 使用注解进行测试
要传递可选参数,请使用注解。
前面的类文件包含一个将一个参数作为输入的测试方法。 所述执行中的测试方法打印使用方法传递到控制台的参数值。
使用 XML 文件中名为的参数将参数值传递到测试方法。 使用针对所述参数的注解定义所述参数的可选值。
2.2 使用注解进行测试
在此文件中,上面定义了两个测试。 在第一个测试中未定义任何参数,第二个测试在其中声明了一个名为“”的参数。
2.3 演示
将以上代码作为测试套件运行的输出为:
从先前的测试结果可以看出,TestNG 在第一次执行测试时就将可选值传递给了测试方法。 发生这种情况是因为 TestNG 在第一次测试中无法在 XML 文件中找到名为的参数。
在第二次测试期间,它在 XML 中找到了参数值,并将该值传递给执行过程中的测试方法。
学习愉快!
原文: https://howtodoinjava.com/testng/testng-dataprovider/
TestNG 提供的重要功能是 testng 功能。 它可以帮助您编写数据驱动的测试,这实际上意味着同一测试方法可以使用不同的数据集多次运行。
请注意,除了从传递参数之外,是向测试方法传递参数的第二种方法。 它有助于为测试方法提供复杂的参数,因为不可能从 XML 做到这一点。
要在测试中使用功能,您必须声明一个由注解的方法,然后在测试方法中使用该方法,并在测试方法中使用注解。
下面的测试类包含一个测试方法,该方法采用一个参数作为输入,并在执行时将其打印到控制台。 通过使用 TestNG 的注解,在同一类中也可以使用方法。
使用注解的属性提及所述方法的名称。 返回一个具有两个数据集的类双数组,即“数据一”和“数据二”。
现在运行以上测试。 以上测试运行的输出如下:
从上面的测试结果可以看出,该类中的相应测试方法已执行了两次。 测试方法的执行取决于方法传递的数据集的数量,在这种情况下,由于返回了两组不同的数据,因此测试方法执行了两次。
方法必须以类的双数组()形式返回数据。 第一个数组代表一个数据集,其中第二个数组包含参数值。
要了解这一点,请添加两个名称分别为和的类,如下所示。
2.1.
2.2.
2.3 演示
现在运行以上测试。 以上测试运行的输出如下:
从上面的测试结果中可以看到,根据方法传递给它的数据,该测试方法已执行两次。 在这种情况下,方法位于另一个类中。 在这种情况下,必须将声明为静态,以便测试方法可以使用另一类中的来提供数据。
学习愉快!
原文: https://howtodoinjava.com/testng/testng-factory-annotation-tutorial/
让我们了解 TestNG 注解,该注解允许根据某些数据集或条件在运行时创建测试。
有时我们可能需要使用不同的数据值运行一组测试。 为此,我们可以在 testng XML 的套件中定义一组独立的测试,并测试所需的场景。 这种方法的问题在于,如果您获得了额外的数据集,则需要重新定义测试。
TestNG 通过提供注解功能解决了此问题。 TestNG 中的工厂在运行时动态定义和创建测试。
工厂方法必须返回类的数组,即。
让我们使用 TestNG 的注解创建一个示例程序,以了解如何使用工厂。
上一类在其中定义了工厂方法。 通过在相应的测试方法上方声明来定义工厂方法。
让我们现在运行工厂。
如您在前面的测试结果中看到的,类的测试方法执行了两次。 该执行基于工厂方法返回的数组。 当所述方法返回类的两个对象时,TestNG 在指定的返回对象内部查找并在其中执行所有测试方法。 在这种情况下,由于只有一种测试方法,因此 TestNG 会执行相应的测试方法。
使用工厂方法的主要优点之一是,您可以在初始化它们时将参数传递给测试类。 然后,可以在上述类中存在的所有测试方法中使用这些参数。
上一个测试类的构造器将一个参数作为整数,并将其分配给局部变量。 然后,在测试类中提供的两种测试方法中使用此变量。 每个测试方法都会为添加一个值,并在执行时将其打印到控制台。
现在开始运行测试。
从前面的测试结果中可以看到,每个测试方法分别执行两次。 测试方法使用初始化测试类时传递的参数,并且控制台显示相应的输出。
功能也可以与注解一起使用,以在运行时创建测试。 这可以通过在类的构造器或常规方法上声明注解来完成。
前面的类类似于我们先前使用的测试类。 测试类的构造器带有注解。 此注解使用名为的方法为测试类的构造器提供值。 方法返回一个双对象数组,其中第一个数组代表数据集,该数据集确定要迭代测试的次数,而第二个数组是每次迭代将传递给测试方法的实际参数值。 所述双对象数组包含两个数据集,其值分别为 0 和 1。
现在开始运行测试。
到目前为止,我们已经看到了工厂实现的不同示例。 让我们看看与工厂类一起使用时如何执行依赖方法。
此类包含两种测试方法和,其中取决于。 该类的构造器将一个参数作为整数,并将其值设置为名为的内部变量。 这两种测试方法在执行时都会将其方法名称和变量值一起打印到控制台。
现在开始运行测试。
从前面的测试结果可以看出,的两个实例都在的任何实例之前执行。 这是 TestNG 中工厂实现的默认行为,它将在实际测试方法之前执行从属测试方法的所有实例。
这与 TestNG 中的 注解有关。 如果您有任何疑问,请告诉我。
学习愉快!
参考:
TestNG 文档
原文: https://howtodoinjava.com/testng/testng-difference-between-factory-and-dataprovider/
在学习 TestNG 时,许多人在阅读和注解时会感到困惑 - 什么时候使用什么? 还有什么更好的呢? 让我们看看它们的两个功能。
以下是 TestNG 上和功能之间的主要区别。
- 数据供应器:使用数据供应器的测试方法将根据数据供应器提供的数据执行多次。 该测试方法将使用该测试方法所属的相同测试类实例来执行。
- 工厂:工厂将使用相应类的单独实例执行测试类中存在的所有测试方法。
TestNG 工厂用于动态创建测试类的实例。 如果要多次运行测试类,这将很有用。 例如,如果您有一个要登录到站点的测试并且想要多次运行该测试,则它易于使用的 TestNG 工厂在其中创建多个测试类实例并运行测试(可能是测试任何内存泄漏) 问题)。
而数据供应器用于为测试提供参数。 如果为测试提供数据供应器,则每次运行测试时将使用不同的值集。 对于需要每次使用不同用户名和密码集登录到站点的情况,这很有用。
让我们创建一个示例,展示这两者之间的明显区别。
下列类包含和方法。 接受参数,该参数的值由方法提供。 方法在执行时将消息打印到控制台上,也是如此。 在执行时将传递给它的参数打印到控制台。
让我们进行测试。
从前面的测试结果中可以看到,无论执行了多少次测试方法,类仅执行一次。
下列类包含和方法。 测试类的构造器采用参数值。 和都将消息打印到控制台上。
让我们进行测试。
从先前的测试结果可以看出,在每次执行之前,都会执行方法。 这表明工厂实现对测试类的每个单独实例执行测试方法。 如前所述,为测试类的单个实例执行测试方法()。
祝您学习愉快!
原文: https://howtodoinjava.com/testng/testng-before-and-after-annotations/
TestNG 的前后注解主要用于在执行测试方法之前和之后执行一组特定的代码。 这些用于基本上在测试执行开始之前设置一些变量或配置,然后在测试执行结束之后清除所有这些内容。
TestNG 提供了五种不同的和注解选项,可以根据测试要求使用每种注解选项。 以下是 TestNG 提供的不同之前和之后选项。
让我们尝试一个包含所有前面带注解的方法的示例,并了解它们何时执行。
创建一个具有所有前后注解的新 TestNG 测试。 您可以根据此 TestNG 教程中给出的说明来创建此测试。 让我们看看如何选择所有之前和之后的注解。
单击确定后,您将获得带有所有注解的测试。 在所有方法中添加一些打印语句,以便可以按执行顺序对其进行跟踪。
现在在测试用例上运行 TestNG 测试,您将在控制台中获得以下输出。
恭喜,您已经成功创建了具有各种前后注解的测试类,并执行了该类。
当前示例仅包含存在于同一类中的注解。 当包含注解的类被另一个具有前后一组注解的类扩展时,让我们学习执行流程。
让我们创建两个新类和。 然后在两者上添加类似的前后注解。 这里主要要注意的是。 测试在类中定义。
3.1 父类
2. 子类
执行测试将生成以下输出。
如您所见,TestNG 的报告输出在被注解的方法之前执行父类,然后在被注解的方法之前执行子类。 在带注解的方法之后,先执行子类方法,然后再执行父类。
这有助于我们在所有测试类中使用通用的注解前方法,并在需要时为每个测试类使用特定的前/后注解方法。
如果您有任何问题要给我留言。
学习愉快!
参考:
TestNG 文档[HTG1]
原文: https://howtodoinjava.com/testng/testng-test-groups-meta-group-default-group-examples/
分组测试方法是 TestNG 的最重要功能之一。 在 TestNG 中,用户可以将多种测试方法分组为一个命名组。 您还可以执行属于一个或多个组的一组特定的测试方法。 此功能允许将测试方法分为不同的部分或模块。 例如,您可以拥有一组属于健全性测试的测试,而其他测试则可能属于回归测试。 您还可以根据测试方法验证的功能/特征分离测试。 这有助于在需要时仅执行一组特定的测试。
在本教程中,我们将在以下步骤/部分中了解有关 TestNG 中测试分组的信息。
让我们创建一个测试类,其中包含属于某个组的某些测试方法。
如果您将在 eclipse 中正常运行上述测试,则测试执行将不考虑要执行的组,因此将执行指定测试类中的所有测试。 如果只想在某个特定组下执行方法,则将以以下两节中讨论的任一种方式执行它们。
在前面的部分中,我们创建了一个测试类,其中包含属于测试组的某些测试方法。 现在,让我们使用 Eclipse 运行测试组。
1)转到“运行 | 运行配置”
2)从可用配置列表中选择 TestNG,然后单击“新的配置”图标。
3)在新的配置窗口中,提供配置名称,例如。
4)转到项目部分,然后单击“浏览”按钮。 选择先前创建的项目,即。
5)转到“分组”部分,然后单击“浏览”按钮。 从列表中选择要执行的组,在这种情况下为测试组。
6)单击“应用”按钮,然后单击“运行”。 以下结果将显示在 Eclipse 的 TestNG 的“结果”窗口中:
恭喜,您已经使用 Eclipse 中的 TestNG 运行器配置成功执行了属于特定组的测试方法。 您还可以通过在“浏览”部分中选择相应的组来使用该工具执行多个组。 通常,最好使用基于 TestNG-XML 的执行来执行属于特定组的测试方法。
现在让我们学习如何创建一个 testng XML 文件来执行属于特定组的测试方法。 此方法是执行组的首选且简便的方法。 而且,这些 testng XML 文件然后可以与构建工具一起使用以执行 TestNG 测试套件。
1)打开 Eclipse 并在先前创建的项目中创建一个名称为的新文件。
2)在上述文件中添加以下代码:
该 xml 文件在套件中仅包含一个测试。 它包含通过使用标记定义的部分,如代码所示。 运行标签表示需要运行的组。 标记代表需要执行的组的名称。
3)选择先前创建的 testng XML 文件并将其作为 TestNG 套件运行。 您将看到以下测试结果:
很棒。 我们成功创建了一个 testng XML 文件,该文件中包含一个组,从而在上述套件中创建了一个测试。 这是通过将上述组包含在运行部分中来完成的。 运行部分又是测试内部标签部分的一部分。 TestNG 将在测试的类部分中提到的类下查找属于该组的测试方法。 用户还可以提供测试包。 TestNG 将搜索添加到测试中的所有类,以包括或排除属于特定组的特定测试方法。 一旦找到,这些测试方法将由 TestNG 作为测试套件执行。
之前我们了解了创建属于单个组的测试的方法,但是 TestNG 允许测试方法也属于多个组。 这可以通过在注解的属性中以数组形式提供组名称来完成。 让我们创建一个包含多个小组的示例程序,以了解其操作方法。
上一类包含三种测试方法。 其中两种测试方法分别属于一组,其中一种方法属于两组,分别是第一组和第二组。
现在,编辑文件,如下所示:
前面的 testng XML 套件包含两个测试,每个测试都执行属于特定组的测试方法。 选择 testng XML 文件并将其作为 TestNG 套件运行。 您将看到以下测试结果:
在这里,我们成功创建了一个测试方法,该方法属于多个组并且可以成功执行。 如您在先前的测试结果中看到的,在测试套件的两个测试中都执行了。 这是因为它属于两个由 TestNG 执行测试方法的组。
TestNG 还允许您从测试执行中包括和排除某些组。 这有助于仅执行一组特定的测试,而排除某些测试。 一个简单的例子是某个功能损坏时,您需要从执行中排除一组固定的测试,因为这些测试将在执行时失败。 修复功能之后,您可以通过执行相应的测试组来验证功能。
让我们创建一个示例程序,并学习如何排除一组测试。
上一类包含三种测试方法,这些方法在执行时将消息打印到控制台上。 这三种方法都属于组,而方法也属于组。
现在在文件上方运行,它将产生以下结果。
从先前的测试结果中可以看出,TestNG 执行了组中的两种方法,并排除了属于组的第三种方法,它从测试执行中排除。
如果测试方法既属于包含组又属于排除组,则排除组具有优先权,并且该测试方法将从测试执行中排除。
在将测试配置为包含或排除组时,TestNG 允许用户使用正则表达式。 这类似于包含和排除我们前面介绍的测试方法。 这可以帮助用户根据名称搜索包含和排除组。
让我们学习如何排除基于基于正则表达式的名称匹配的测试。
和文件。
前面的 XML 包含一个简单的测试,其中包含名称以开头的所有组,而名称以结尾的所有组都从测试执行中排除。
现在运行文件,您将在控制台中获得以下结果。
在此,TestNG 执行了两个名称以开头的组的方法,并排除了名称以结尾的组的测试方法。
要使用正则表达式包含和排除组,必须使用来匹配名称。 通过在搜索字符串的开头和结尾使用表达式(例如,),我们也可以将其用于搜索名称中包含某个字符串的组。
有时我们可能需要将默认组分配给属于一个类的一组测试方法。 这样,属于所述类的所有公共方法将自动成为 TestNG 测试方法,并成为所述组的一部分。
这可以通过在类级别使用注解并在所述注解中定义默认组来实现。
TestNG 允许用户从现有组中创建组,然后在创建测试套件时使用它们。 您可以通过包含和排除某些组来创建新组,然后使用它们。
让我们创建一个示例测试程序,并学习如何创建称为元组的组中组。
现在创建文件,如下所示:
这里在测试内部定义了两组,然后将这些组用于测试执行。 使用标签内的标签创建元组。 使用标签下的属性定义新组的名称。 通过使用和标签从新组中排除组。
现在运行测试,它将在控制台中产生以下结果:
在这里,testNG 仅执行两种方法,如在组中提到的,并排除了属于的测试方法。 您可以根据需要定义任意多个组。
此功能有助于为回归,健全性和模块测试创建特定的组。
这些都与 TestNG 中的测试组有关。 让我知道您是否有任何疑问。
学习愉快!
到此这篇junit和djunit区别(junit和testng)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/34094.html