提交 d19da2dc 编写于 作者: W wizardforcel

2020-06-06 10:35:04

上级 b74a8c7d
# TestNG @DataProvider –测试参数示例
# TestNG `@DataProvider` – 测试参数示例
> 原文: [https://howtodoinjava.com/testng/testng-dataprovider/](https://howtodoinjava.com/testng/testng-dataprovider/)
TestNG 提供的重要功能是 **testng DataProvider** 功能。 它可以帮助您编写**数据驱动的测试**,这实际上意味着同一测试方法可以使用不同的数据集多次运行。
TestNG 提供的重要功能是 **testng `DataProvider`**功能。 它可以帮助您编写**数据驱动的测试**,这实际上意味着同一测试方法可以使用不同的数据集多次运行。
请注意,除了[从 testng.xml](https://howtodoinjava.com/testng/testng-parameters/) 传递参数之外, **@DataProvider** 是向测试方法传递参数的第二种方法。 它有助于为测试方法提供复杂的参数,因为不可能从 XML 做到这一点。
请注意,除了[`testng.xml`](https://howtodoinjava.com/testng/testng-parameters/)传递参数之外,`@DataProvider`是向测试方法传递参数的第二种方法。 它有助于为测试方法提供复杂的参数,因为不可能从 XML 做到这一点。
要在测试中使用 DataProvider 功能,您必须声明一个由`@DataProvider`注解的方法,然后在测试方法中使用该方法,并在测试方法中使用' `@Test`注解。
要在测试中使用`DataProvider`功能,您必须声明一个由`@DataProvider`注解的方法,然后在测试方法中使用该方法,并在测试方法中使用`@Test`注解。
## 1\. TestNG @DataProvider 和@Test 在同一类中
## 1\. TestNG 同一类中的`@DataProvider`和`@Test`
下面的测试类包含一个测试方法,该方法采用一个参数作为输入,并在执行时将其打印到控制台。 通过使用 TestNG 的`@DataProvider`注解,在同一类中也可以使用 DataProvider 方法。
下面的测试类包含一个测试方法,该方法采用一个参数作为输入,并在执行时将其打印到控制台。 通过使用 TestNG 的`@DataProvider`注解,在同一类中也可以使用`DataProvider`方法。
使用`@DataProvider`注解的 ***名称*** 属性提及所述 DataProvider 方法的名称。 DataProvider 返回一个具有两个数据集的双 Object 类数组,即“数据一”和“数据二”。
使用`@DataProvider`注解的`name`属性提及所述`DataProvider`方法的名称。 `DataProvider`返回一个具有两个数据集的`Object`类双数组,即“数据一”和“数据二”。
```java
package com.howtodoinjava.test;
......@@ -46,15 +46,15 @@ PASSED: testMethod("data two")
```
从上面的测试结果可以看出,该类中的相应测试方法已执行了两次。 测试方法的执行取决于 DataProvider 方法传递的数据集的数量,在这种情况下,由于 DataProvider 返回了两组不同的数据,因此测试方法执行了两次。
从上面的测试结果可以看出,该类中的相应测试方法已执行了两次。 测试方法的执行取决于`DataProvider`方法传递的数据集的数量,在这种情况下,由于`DataProvider`返回了两组不同的数据,因此测试方法执行了两次。
It is mandatory for a `@DataProvider` method to return the data in the form of double array of Object class (**Object [][]**). The first array represents a data set where as the second array contains the parameter values.
`@DataProvider`方法必须以`Object`类的双数组(`Object[][]`)形式返回数据。 第一个数组代表一个数据集,其中第二个数组包含参数值。
## 2\. TestNG @DataProvider 和@Test 在不同的类中
## 2\. TestNG 不同的类中的`@DataProvider`和`@Test`
要了解这一点,请添加两个名称分别为`DataProviderClass``TestClass`的类,如下所示。
#### 2.1\. DataProvider.java
#### 2.1\. `DataProvider.java`
```java
import org.testng.annotations.DataProvider;
......@@ -70,7 +70,7 @@ public class DataProviderClass
```
#### 2.2\. TestClass.java
#### 2.2\. `TestClass.java`
```java
import org.testng.annotations.Test;
......@@ -88,7 +88,7 @@ public class TestClass
#### 2.3 演示
Now run above test. Output of above test run is given below:
现在运行以上测试。 以上测试运行的输出如下:
```java
Data is: data one
......@@ -99,6 +99,6 @@ PASSED: testMethod("data two")
```
从上面的测试结果中可以看到,根据 DataProvider 方法传递给它的数据,该测试方法已执行两次。 在这种情况下,DataProvider 方法位于另一个类中。 在这种情况下,必须将`dataProviderMethod()`声明为<static>静态</static>,以便测试方法可以使用另一类中的`dataProviderMethod()`来提供数据。
从上面的测试结果中可以看到,根据`DataProvider`方法传递给它的数据,该测试方法已执行两次。 在这种情况下,`DataProvider`方法位于另一个类中。 在这种情况下,必须将`dataProviderMethod()`声明为静态,以便测试方法可以使用另一类中的`dataProviderMethod()`来提供数据。
学习愉快!
\ No newline at end of file
# TestNG @Factory 注解教程
# TestNG `@Factory`注解教程
> 原文: [https://howtodoinjava.com/testng/testng-factory-annotation-tutorial/](https://howtodoinjava.com/testng/testng-factory-annotation-tutorial/)
让我们了解 **TestNG @Factory 注解**,该注解允许根据某些数据集或条件在运行时创建测试。
让我们了解 **TestNG `@Factory`注解**,该注解允许根据某些数据集或条件在运行时创建测试。
```java
Table of Contents
......@@ -19,9 +19,9 @@ Table of Contents
有时我们可能需要**使用不同的数据值**运行一组测试。 为此,我们可以在 testng XML 的套件中定义一组独立的测试,并测试所需的场景。 这种方法的问题在于,如果您获得了额外的数据集,则需要重新定义测试。
TestNG 通过提供`@Factory`注解功能解决了此问题。 TestNG 中的 Factory 在运行时动态定义和创建测试。
TestNG 通过提供`@Factory`注解功能解决了此问题。 TestNG 中的工厂在运行时动态定义和创建测试。
工厂方法必须返回`Object`类的数组,即`Object []`
工厂方法必须返回`Object`类的数组,即`Object[]`
## 2\. 基本的 testng 工厂示例
......@@ -96,7 +96,7 @@ public class SimpleTestFactory
```
上一个测试类的构造器将一个参数作为整数,并将其分配给局部变量 param。 然后,在测试类中提供的两种测试方法中使用此变量。 每个测试方法都会为 param 添加一个值,并在执行时将其打印到控制台。
上一个测试类的构造器将一个参数作为整数,并将其分配给局部变量`param`。 然后,在测试类中提供的两种测试方法中使用此变量。 每个测试方法都会为`param`添加一个值,并在执行时将其打印到控制台。
现在开始运行测试。
......@@ -115,7 +115,7 @@ PASSED: testMethodTwo
从前面的测试结果中可以看到,每个测试方法分别执行两次。 测试方法使用初始化测试类时传递的参数,并且控制台显示相应的输出。
## 4\. TestNG @Factory 和@DataProvider
## 4\. TestNG `@Factory`和`@DataProvider`
`@DataProvider`功能也可以与`@Factory`注解一起使用,以在运行时创建测试。 这可以通过在类的构造器或常规方法上声明`@Factory`注解来完成。
......@@ -149,9 +149,9 @@ public class DataProviderTest
```
前面的类类似于我们先前使用的测试类。 测试类的构造器带有`@Factory`注解。 此注解使用名为 ***dataMethod*** 的 DataProvider 方法为测试类的构造器提供值。 DataProvider 方法返回一个双对象数组,其中第一个数组代表数据集,该数据集确定要迭代测试的次数,而第二个数组是每次迭代将传递给测试方法的实际参数值。 所述双对象数组包含两个数据集,其值分别为 0 和 1。
前面的类类似于我们先前使用的测试类。 测试类的构造器带有`@Factory`注解。 此注解使用名为`dataMethod``DataProvider`方法为测试类的构造器提供值。 `DataProvider`方法返回一个双对象数组,其中第一个数组代表数据集,该数据集确定要迭代测试的次数,而第二个数组是每次迭代将传递给测试方法的实际参数值。 所述双对象数组包含两个数据集,其值分别为 0 和 1。
Let’s run the test now.
现在开始运行测试。
```java
Test method one output: 2
......@@ -166,7 +166,7 @@ PASSED: testMethodTwo
```
## 5\. TestNG @Factory –依赖测试
## 5\. TestNG `@Factory` – 依赖测试
到目前为止,我们已经看到了工厂实现的不同示例。 让我们看看与工厂类一起使用时如何执行依赖方法。
......@@ -201,7 +201,7 @@ public class SimpleTestFactory
```
此类包含两种测试方法`testMethodOne``testMethodTwo`,其中`testMethodOne`取决于`testMethodTwo`。 该类的构造器将一个参数作为整数,并将其值设置为名为 ***param*** 的内部变量。 这两种测试方法在执行时都会将其方法名称和 param 变量值一起打印到控制台。
此类包含两种测试方法`testMethodOne``testMethodTwo`,其中`testMethodOne`取决于`testMethodTwo`。 该类的构造器将一个参数作为整数,并将其值设置为名为`param`的内部变量。 这两种测试方法在执行时都会将其方法名称和`param`变量值一起打印到控制台。
现在开始运行测试。
......@@ -220,10 +220,10 @@ PASSED: testMethodOne
从前面的测试结果可以看出,`testMethodTwo`的两个实例都在`testMethodOne`的任何实例之前执行。 这是 TestNG 中工厂实现的默认行为,它将在实际测试方法之前执行从属测试方法的所有实例。
这与 TestNG 中的 **`@Factory`注解有关。** 如果您有任何疑问,请告诉我。
这与 TestNG 中的 **`@Factory`注解有关** 如果您有任何疑问,请告诉我。
学习愉快!
参考:
[TestNG 文档[​​HTG1]](http://testng.org/doc/documentation-main.html)
\ No newline at end of file
[TestNG 文档](http://testng.org/doc/documentation-main.html)
\ No newline at end of file
# TestNG – @Factory 和@DataProvider 之间的区别
# TestNG – `@Factory`和`@DataProvider`之间的区别
> 原文: [https://howtodoinjava.com/testng/testng-difference-between-factory-and-dataprovider/](https://howtodoinjava.com/testng/testng-difference-between-factory-and-dataprovider/)
在学习 TestNG 时,许多人在阅读`@DataProvider``@Factory`注解时会感到困惑-什么时候使用什么? 还有什么更好的呢? 让我们看看它们的两个功能。
在学习 TestNG 时,许多人在阅读`@DataProvider``@Factory`注解时会感到困惑 - 什么时候使用什么? 还有什么更好的呢? 让我们看看它们的两个功能。
## @Factory 和@DataProvider 之间的区别
## `@Factory`和`@DataProvider`之间的区别
以下是 TestNG 上@Factory 和@DataProvider 功能之间的主要**区别。**
以下是 TestNG 上`@Factory``@DataProvider`功能之间的主要**区别**
1. **数据供应器**:使用数据供应器的测试方法将根据数据供应器提供的数据执行多次。 该测试方法将使用该测试方法所属的相同测试类实例来执行。
2. **工厂**:工厂将使用相应类的单独实例执行测试类中存在的所有测试方法。
TestNG 工厂用于动态创建测试类的实例。 如果要多次运行测试类,这将很有用。 例如,如果您有一个要登录到站点的测试并且想要多次运行该测试,则它易于使用的 TestNG 工厂在其中创建多个测试类实例并运行测试(可能是测试任何内存泄漏) 问题)。
dataprovider 用于为测试提供参数。 如果为测试提供数据供应器,则每次运行测试时将使用不同的值集。 对于需要每次使用不同用户名和密码集登录到站点的情况,这很有用。
数据供应器用于为测试提供参数。 如果为测试提供数据供应器,则每次运行测试时将使用不同的值集。 对于需要每次使用不同用户名和密码集登录到站点的情况,这很有用。
让我们创建一个示例,展示这两者之间的明显区别。
## @DataProvider 示例
## `@DataProvider`示例
下列类包含`testMethod``beforeClass`方法。 `testMethod`接受 String 参数,该参数的值由 DataProvider 方法`dataMethod`提供。 `beforeClass`方法在执行时将消息打印到控制台上,`testMethod`也是如此。 `testMethod`在执行时将传递给它的参数打印到控制台。
下列类包含`testMethod``beforeClass`方法。 `testMethod`接受`String`参数,该参数的值由`DataProvider`方法`dataMethod`提供。 `beforeClass`方法在执行时将消息打印到控制台上,`testMethod`也是如此。 `testMethod`在执行时将传递给它的参数打印到控制台。
```java
public class DataProviderClass
......@@ -55,9 +55,9 @@ PASSED: testMethod("two")
从前面的测试结果中可以看到,无论执行了多少次测试方法,类`beforeClass`仅执行一次。
## @Factory 示例
## `@Factory`示例
下列类包含`testMethod``beforeClass`方法。 测试类的构造器采用 String 参数值。 `beforeClass``testMethod`都将消息打印到控制台上。
下列类包含`testMethod``beforeClass`方法。 测试类的构造器采用`String`参数值。 `beforeClass``testMethod`都将消息打印到控制台上。
```java
public class SimpleTest
......@@ -92,7 +92,7 @@ public class SimpleTestFactory
```
Let’s run above test.
让我们进行测试。
```java
Before SimpleTest class executed.
......@@ -104,6 +104,6 @@ PASSED: testMethod
```
从先前的测试结果可以看出,在每次执行`testMethod`之前,都会执行`beforeClass`方法。 这表明工厂实现对测试类的每个单独实例执行测试方法。 如前所述,DataProvider 为测试类的单个实例执行测试方法(`testMethod`)。
从先前的测试结果可以看出,在每次执行`testMethod`之前,都会执行`beforeClass`方法。 这表明工厂实现对测试类的每个单独实例执行测试方法。 如前所述,`DataProvider`为测试类的单个实例执行测试方法(`testMethod`)。
**祝您学习愉快!**
\ No newline at end of file
# 注解前后的 TestNG
# TestNG 的前后注解
> 原文: [https://howtodoinjava.com/testng/testng-before-and-after-annotations/](https://howtodoinjava.com/testng/testng-before-and-after-annotations/)
**TestNG 的前后[注解](//howtodoinjava.com/testng/testng-annotations-tutorial/ "TestNG Annotations Tutorial")** 主要用于在执行测试方法之前和之后执行一组特定的代码。 这些用于基本上在测试执行开始之前设置一些变量或配置,然后在测试执行结束之后清除所有这些内容。
TestNG 的前后[注解](//howtodoinjava.com/testng/testng-annotations-tutorial/ "TestNG Annotations Tutorial")主要用于在执行测试方法之前和之后执行一组特定的代码。 这些用于基本上在测试执行开始之前设置一些变量或配置,然后在测试执行结束之后清除所有这些内容。
## 1\. 注解前后的 TestNG
## 1\. TestNG 的前后注解
TestNG 提供了五种不同的`Before``After`注解选项,可以根据测试要求使用每种注解选项。 以下是 TestNG 提供的不同之前和之后选项。
| 注解 | 描述 |
| @BeforeSuite | 带注解的方法将在该套件中的所有测试运行之前运行。 |
| @BeforeTest | 带注解的方法将在运行属于`test`标记内的类的任何测试方法之前运行。 |
| @BeforeGroups | 此配置方法将在其之前运行的组的列表。 保证此方法可以在调用属于任何一个组的第一个测试方法之前不久运行。 |
| @课前 | 带注解的方法将在调用当前类中的第一个测试方法之前运行。 |
| @BeforeMethod | 带注解的方法将在当前类中的所有测试方法运行之前运行。 |
| @AfterSuite | 带注解的方法将在该套件中的所有测试运行之后运行。 |
| @AfterTest | 带注解的方法将在所有属于`test`标记内的类的测试方法运行后运行。 |
| @AfterGroups | 此配置方法将在其后运行的组的列表。 保证在调用属于这些组中任何一个的最后一个测试方法后不久便可以运行该方法。 |
| @下课以后 | 带注解的方法将在当前类中的所有测试方法运行之后运行。 |
| @AfterMethod | 带注解的方法将在每种测试方法之后运行。 |
| --- | --- |
| `@BeforeSuite` | 带注解的方法将在该套件中的所有测试运行之前运行。 |
| `@BeforeTest` | 带注解的方法将在运行属于`test`标记内的类的任何测试方法之前运行。 |
| `@BeforeGroups` | 此配置方法将在其之前运行的组的列表。 保证此方法可以在调用属于任何一个组的第一个测试方法之前不久运行。 |
| `@BeforeClass` | 带注解的方法将在调用当前类中的第一个测试方法之前运行。 |
| `@BeforeMethod` | 带注解的方法将在当前类中的所有测试方法运行之前运行。 |
| `@AfterSuite` | 带注解的方法将在该套件中的所有测试运行之后运行。 |
| `@AfterTest` | 带注解的方法将在所有属于`test`标记内的类的测试方法运行后运行。 |
| `@AfterGroups` | 此配置方法将在其后运行的组的列表。 保证在调用属于这些组中任何一个的最后一个测试方法后不久便可以运行该方法。 |
| `@AfterClass` | 带注解的方法将在当前类中的所有测试方法运行之后运行。 |
| `@AfterMethod` | 带注解的方法将在每种测试方法之后运行。 |
让我们尝试一个包含所有前面带注解的方法的示例,并了解它们何时执行。
## 2\. TestNG 注解前后的示例
## 2\. TestNG 前后注解的示例
创建一个具有所有注解前后的新 TestNG 测试。 您可以根据此 [**TestNG 教程**](//howtodoinjava.com/testng/testng-tutorial-with-eclipse/ "TestNG Tutorial (With Eclipse)") 中给出的说明来创建此测试。 让我们看看如何选择所有注解之前和之后的注解。
创建一个具有所有前后注解的新 TestNG 测试。 您可以根据此 [**TestNG 教程**](//howtodoinjava.com/testng/testng-tutorial-with-eclipse/ "TestNG Tutorial (With Eclipse)")中给出的说明来创建此测试。 让我们看看如何选择所有之前和之后的注解。
![Select all testng annotations](img/0b9218535b4d445357b6a3f938096beb.png)
......@@ -92,7 +93,7 @@ public class MyFirstTest
```
现在在 Testcase 上方运行 TestNG 测试,您将在控制台中获得以下输出。
现在在测试用例上运行 TestNG 测试,您将在控制台中获得以下输出。
```java
[TestNG] Running:
......@@ -132,7 +133,7 @@ Total tests run: 1, Failures: 0, Skips: 0
当前示例仅包含存在于同一类中的注解。 当包含注解的类被另一个具有前后一组注解的类扩展时,让我们学习执行流程。
## 3\. 在超类上放置注解之前和之后
## 3\. 在超类上放置之前和之后注解
让我们创建两个新类`BaseClass``ChildClass`。 然后在两者上添加类似的前后注解。 这里主要要注意的是`ChildClass extends BaseClass`。 测试在`ChildClass`类中定义。
......@@ -212,7 +213,7 @@ public class ChildClass extends BaseClass {
```
执行 ChildClass 测试将生成以下输出。
执行`ChildClass`测试将生成以下输出。
```java
[TestNG] Running:
......@@ -250,7 +251,7 @@ Total tests run: 1, Failures: 0, Skips: 0
如您所见,TestNG 的报告输出在被注解的方法之前执行父类,然后在被注解的方法之前执行子类。 在带注解的方法之后,先执行子类方法,然后再执行父类。
这有助于我们在所有测试类中使用通用的注解前方法,并在需要时为每个测试类使用特定的**注解前/后方法**
这有助于我们在所有测试类中使用通用的注解前方法,并在需要时为每个测试类使用特定的**前/后注解方法**
如果您有任何问题要给我留言。
......
# TestNG –测试组,元组,默认组示例
# TestNG – 测试组,元组,默认组示例
> 原文: [https://howtodoinjava.com/testng/testng-test-groups-meta-group-default-group-examples/](https://howtodoinjava.com/testng/testng-test-groups-meta-group-default-group-examples/)
......@@ -55,18 +55,21 @@ public class TestGroupExample
在前面的部分中,我们创建了一个测试类,其中包含属于测试组的某些测试方法。 现在,让我们使用 Eclipse 运行测试组。
1)**转到运行| 运行配置**
2)**从可用配置列表中选择 TestNG,然后单击新的配置图标**
3)在新的配置窗口**中,提供配置名称**,例如 TestGroupExample。
4)转到项目部分,然后单击浏览按钮。 **选择先前创建的项目**,即 TestNGExamples。
1)**转到“运行 | 运行配置”**
2)**从可用配置列表中选择 TestNG,然后单击“新的配置”图标**
3)在新的配置窗口中,**提供配置名称**,例如`TestGroupExample`
4)转到项目部分,然后单击“浏览”按钮。 **选择先前创建的项目**,即`TestNGExamples`
![Select group in eclipse](img/3c5de2d34d733254152244d293702404.png)
5)转到“组”部分,然后单击“浏览”按钮。 **从列表中选择要执行**的组,在这种情况下为测试组。
5)转到“分组”部分,然后单击“浏览”按钮。 **从列表中选择要执行的组**,在这种情况下为测试组。
![Browse Group Name](img/2a16b538fc44087ae20f8caae21f2a38.png)
6)**单击“应用”按钮,然后单击“运行”** 。 以下结果将显示在 Eclipse 的 TestNG 的“结果”窗口中:
6)**单击“应用”按钮,然后单击“运行”**。 以下结果将显示在 Eclipse 的 TestNG 的“结果”窗口中:
```java
Test method one belonging to group.
......@@ -83,12 +86,13 @@ PASSED: testMethodThree
恭喜,您已经使用 Eclipse 中的 TestNG 运行器配置成功执行了属于特定组的测试方法。 您还可以通过在“浏览”部分中选择相应的组来使用该实用程序执行多个组。 通常,最好使用基于 TestNG-XML 的执行来执行属于特定组的测试方法。
## 通过 testng.xml 运行 TestNG 组
## 通过`testng.xml`运行 TestNG 组
现在让我们学习如何创建一个 testng XML 文件来执行属于特定组的测试方法。 **此方法是执行组的首选且简便的方法。 而且,这些 testng XML 文件然后可以与构建工具一起使用以执行 TestNG 测试套件。**
**1)**打开 Eclipse 并在先前创建的项目中创建一个名称为`testng.xml`的新文件。
**2)**在上述文件中添加以下代码:
1)打开 Eclipse 并在先前创建的项目中创建一个名称为`testng.xml`的新文件。
2)在上述文件中添加以下代码:
```java
<suite name="Time test Suite" verbose="1">
......@@ -106,9 +110,9 @@ PASSED: testMethodThree
```
该 xml 文件在套件中仅包含一个测试。 它包含通过使用 groups 标记定义的 groups 部分,如代码所示。 运行标签表示需要运行的组。 include 标记代表需要执行的组的名称。
该 xml 文件在套件中仅包含一个测试。 它包含通过使用`groups`标记定义的`groups`部分,如代码所示。 运行标签表示需要运行的组。 `include`标记代表需要执行的组的名称。
**3)**选择先前创建的 testng XML 文件并将其作为 TestNG 套件运行。 您将看到以下测试结果:
3)选择先前创建的 testng XML 文件并将其作为 TestNG 套件运行。 您将看到以下测试结果:
```java
Test method one belonging to group.
......@@ -121,11 +125,11 @@ Total tests run: 2, Failures: 0, Skips: 0
```
大。 我们成功创建了一个 testng XML 文件,该文件中包含一个组,从而在上述套件中创建了一个测试。 这是通过将上述组包含在运行部分中来完成的。 运行部分又是测试内部 groups 标签部分的一部分。 TestNG 将在测试的类部分中提到的类下查找属于该组的测试方法。 用户还可以提供测试包。 TestNG 将搜索添加到测试中的所有类,以包括或排除属于特定组的特定测试方法。 一旦找到,这些测试方法将由 TestNG 作为测试套件执行。
很棒。 我们成功创建了一个 testng XML 文件,该文件中包含一个组,从而在上述套件中创建了一个测试。 这是通过将上述组包含在运行部分中来完成的。 运行部分又是测试内部`groups`标签部分的一部分。 TestNG 将在测试的类部分中提到的类下查找属于该组的测试方法。 用户还可以提供测试包。 TestNG 将搜索添加到测试中的所有类,以包括或排除属于特定组的特定测试方法。 一旦找到,这些测试方法将由 TestNG 作为测试套件执行。
## 编写属于多个组的测试
之前我们了解了创建属于单个组的测试的方法,但是 TestNG 允许**测试方法也属于多个组**。 这可以通过在`@Test`注解的 groups 属性中以数组形式提供组名称来完成。 让我们创建一个包含多个小组的示例程序,以了解其操作方法。
之前我们了解了创建属于单个组的测试的方法,但是 TestNG 允许**测试方法也属于多个组**。 这可以通过在`@Test`注解的`groups`属性中以数组形式提供组名称来完成。 让我们创建一个包含多个小组的示例程序,以了解其操作方法。
```java
package com.howtodoinjava.groupExamples;
......@@ -154,7 +158,7 @@ public class MultiGroupExample
上一类包含三种测试方法。 其中两种测试方法分别属于一组,其中一种方法属于两组,分别是第一组和第二组。
现在,编辑 testng.xml 文件,如下所示:
现在,编辑`testng.xml`文件,如下所示:
```java
<suite name="Multi Group Suite" verbose="1">
......@@ -231,7 +235,7 @@ public class ExcludeGroupTest
```
上一类包含三种测试方法,这些方法在执行时将消息打印到控制台上。 这三种方法都属于组 ***包含组*** ,而`testMethodThree()`方法也属于组 ***排除组***
上一类包含三种测试方法,这些方法在执行时将消息打印到控制台上。 这三种方法都属于组`include-group`,而`testMethodThree()`方法也属于组`exclude-group`
```java
<suite name="Exclude Group Suite" verbose="1">
......@@ -250,7 +254,7 @@ public class ExcludeGroupTest
```
现在在 testng.xml 文件上方运行,它将产生以下结果。
现在在`testng.xml`文件上方运行,它将产生以下结果。
```java
Test method one belonging to include group.
......@@ -263,13 +267,13 @@ Total tests run: 2, Failures: 0, Skips: 0
```
从先前的测试结果中可以看出,TestNG 执行了**组*包含组*** 中的两种方法,并排除了属于**组 *exclude-group 的第三种方法*** ,它从测试执行中排除。
从先前的测试结果中可以看出,TestNG 执行了**组`include-group`中的两种方法**,并排除了属于**组`exclude-group`的第三种方法**,它从测试执行中排除。
If a test method belongs to both included and excluded group, the excluded group takes the priority and the test method will be excluded from the test execution.
如果测试方法既属于包含组又属于排除组,则排除组具有优先权,并且该测试方法将从测试执行中排除。
## 使用正则表达式
在将测试配置为包含或排除组时,TestNG 允许用户使用 [**正则表达式**](//howtodoinjava.com/java-regular-expression-tutorials/ "Java Regular Expression Tutorial") 。 这类似于包含和排除我们前面介绍的测试方法。 这可以帮助用户根据名称搜索包含和排除组。
在将测试配置为包含或排除组时,TestNG 允许用户使用[**正则表达式**](//howtodoinjava.com/java-regular-expression-tutorials/ "Java Regular Expression Tutorial")。 这类似于包含和排除我们前面介绍的测试方法。 这可以帮助用户根据名称搜索包含和排除组。
让我们学习如何排除基于基于正则表达式的名称匹配的测试。
......@@ -303,7 +307,7 @@ public class RegularExpressionGroupTest
```
testng.xml 文件。
`testng.xml`文件。
```java
<suite name="Regular Exp. Group Suite" verbose="1">
......@@ -322,7 +326,7 @@ public class RegularExpressionGroupTest
```
前面的 XML 包含一个简单的测试,其中包含名称以 include 开头的所有组,而名称以 exclude 结尾的所有组都从测试执行中排除。
前面的 XML 包含一个简单的测试,其中包含名称以`include`开头的所有组,而名称以`exclude`结尾的所有组都从测试执行中排除。
现在运行`testng.xml`文件,您将在控制台中获得以下结果。
......@@ -337,9 +341,9 @@ Total tests run: 2, Failures: 0, Skips: 0
```
在此,TestNG 执行了两个名称以 include 开头的组的方法,并排除了名称以 exclude 结尾的组的测试方法。
在此,TestNG 执行了两个名称以`include`开头的组的方法,并排除了名称以`exclude`结尾的组的测试方法。
To use regular expressions to include and exclude groups you have to use .* for matching names. We can also use it for searching groups that contains a certain string in their names by using the expression at start and end of the search string (for example, .*name.*).
要使用正则表达式包含和排除组,必须使用`.*`来匹配名称。 通过在搜索字符串的开头和结尾使用表达式(例如,`.*name.*`),我们也可以将其用于搜索名称中包含某个字符串的组。
## 分配默认组
......@@ -366,11 +370,11 @@ public class DefaultGroup {
```
## 组群组或“ MetaGroups
## 组中组或“元组
TestNG 允许用户从现有组中创建组,然后在创建测试套件时使用它们。 **您可以通过包含和排除某些组来创建新组,然后使用它们。**
让我们创建一个示例测试程序,并学习如何创建称为 **MetaGroups** 的组组。
让我们创建一个示例测试程序,并学习如何创建称为**元组**的组中组。
```java
package com.howtodoinjava.groupExamples;
......@@ -402,7 +406,7 @@ public class RegularExpressionGroupTest
```
现在创建 testng.xml 文件,如下所示:
现在创建`testng.xml`文件,如下所示:
```java
<suite name="Group of group Suite" verbose="1">
......@@ -429,7 +433,7 @@ public class RegularExpressionGroupTest
```
这里在测试内部定义了两组,然后将这些组用于测试执行。 使用 ***组*** 标签内的 define 标签创建 MetaGroup。 使用 define 标签下的 name 属性定义新组的名称。 通过使用**将*包括*** 和 ***排除*** 标签从新组中排除组。
这里在测试内部定义了两组,然后将这些组用于测试执行。 使用`groups`标签内的`define`标签创建元组。 使用`define`标签下的`name`属性定义新组的名称。 通过使用`include``exclude`标签从新组中排除组。
现在运行`testng.xml`测试,它将在控制台中产生以下结果:
......@@ -444,9 +448,9 @@ Total tests run: 2, Failures: 0, Skips: 0
```
在这里,testNG 仅执行两种方法,如在 include-group 组中提到的,并排除了属于 exclude-group 的测试方法。 您可以根据需要定义任意多个组。
在这里,testNG 仅执行两种方法,如在`include-group`组中提到的,并排除了属于`exclude-group`的测试方法。 您可以根据需要定义任意多个组。
This feature is helpful in creating specific groups for regression, sanity, and module-wise testing.
此功能有助于为回归,健全性和模块测试创建特定的组。
这些都与 TestNG 中的测试组有关。 让我知道您是否有任何疑问。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册