# TestNG – 依赖测试示例

> 原文： [https://howtodoinjava.com/testng/testng-dependent-tests-examples/](https://howtodoinjava.com/testng/testng-dependent-tests-examples/)

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

在本教程中，我们将学习如何在 TestNG 中创建依赖测试。

```java
Table of Contents

Test with single test method dependency
Test with multiple test methods dependencies
Inherited dependency test
Test that depends on a group

```

## 使用单一测试方法依赖项进行测试

TestNG 允许您创建一个示例测试方法，该方法依赖于同一类的另一个测试方法。

```java
public class DependentTestExamples 
{
	@Test(dependsOnMethods = { "testTwo" })
	public void testOne() {
		System.out.println("Test method one");
	}

	@Test
	public void testTwo() {
		System.out.println("Test method two");
	}
}

```

前面的测试类包含两个测试方法，这些方法在执行时将消息名称打印到控制台上。 在此，测试方法`testOne`取决于测试方法`testTwo`。 在使用`Test`注解时，通过使用属性`dependsOnMethods`进行配置。

现在开始运行测试。

```java
Test method two
Test method one
PASSED: testTwo
PASSED: testOne

```

在上面的测试结果中，您可以看到在测试方法一消息之前打印了测试方法二消息。 这表明`testOne`方法在`testTwo`之后执行，因为它取决于`testTwo`。

## 使用多种测试方法依赖项进行测试

有时，可能需要一种测试方法依赖于其他多种方法。 作为依赖项支持的一部分，TestNG 很好地支持了此功能。

```java
public class DependentTestExamples 
{
	@Test(dependsOnMethods = { "testTwo", "testThree" })
	public void testOne() {
		System.out.println("Test method one");
	}

	@Test
	public void testTwo() {
		System.out.println("Test method two");
	}

	@Test
	public void testThree() {
		System.out.println("Test method three");
	}
}

```

前面的测试类包含三种测试方法，这些方法在执行时会将消息名称打印到控制台上。 这里的测试方法`testOne`取决于测试方法`testTwo`和`testThree`。 在使用`Test`注解时，通过使用属性`dependsOnMethods`进行配置。

现在开始运行测试。

```java
Test method three
Test method two
Test method one
PASSED: testThree
PASSED: testTwo
PASSED: testOne

```

通过查看控制台消息，我们可以看到方法`testTwo`和`testThree`在`testOne`之前执行。

## 继承的依赖测试

到目前为止，我们已经看到了相关测试方法属于同一类的示例。 只能针对属于同一类或任何继承的基类的测试方法提及对测试方法的依赖项。 让我们看看当依赖方法是继承的基类的一部分时，TestNG 如何执行测试方法。

```java
public class ParentClassTest 
{
	@Test(dependsOnMethods = { "testTwo" })
	public void testOne() {
		System.out.println("Test method one");
	}

	@Test
	public void testTwo() {
		System.out.println("Test method two");
	}
}

public class DependentTestExamples extends ParentClassTest
{
	@Test(dependsOnMethods = { "testOne" })
	public void testThree() {
		System.out.println("Test three method in Inherited test");
	}

	@Test
	public void testFour() {
		System.out.println("Test four method in Inherited test");
	}
}

```

前面的测试类包含两个测试方法，这些方法在执行时将消息名称打印到控制台上。 这里的测试方法`testThree`取决于测试方法`testOne`。 在使用`Test`注解时，通过使用属性 `dependsOnMethods`进行配置。

现在开始运行测试。

```java
Test four method in Inherited test
Test method two
Test method one
Test three method in Inherited test
PASSED: testFour
PASSED: testTwo
PASSED: testOne
PASSED: testThree

```

从测试结果中可以看出，执行的顺序为`testFour`，`testTwo`，`testOne`，最后是`testThree`。 由于`testThree`依赖于`testOne`和`testTwo`，因此 TestNG 根据相关性执行所有测试方法，最后根据各自的测试方法执行所有测试方法。

## 依赖组的测试

与依赖方法类似，TestNG 还允许测试方法依赖组。 这样可以确保在依赖测试方法之前执行一组测试方法。

```java
public class DependentTestExamples
{
	@Test(dependsOnGroups = { "test-group" })
	public void groupTestOne() {
		System.out.println("Group Test method one");
	}

	@Test(groups = { "test-group" })
	public void groupTestTwo() {
		System.out.println("Group test method two");
	}

	@Test(groups = { "test-group" })
	public void groupTestThree() {
		System.out.println("Group Test method three");
	}
}

```

前面的测试类包含两个测试方法，这些方法在执行时将消息名称打印到控制台上。 这里，测试方法`testOne`取决于测试方法`testTwo`。 这是通过在使用`Test`注解时使用属性`dependsOnMethods`来配置的。

现在开始运行测试。

```java
Group Test method three
Group test method two
Group Test method one
PASSED: groupTestThree
PASSED: groupTestTwo
PASSED: groupTestOne

```

方法依赖项仅适用于属于同一类或一个继承的类中的其他方法，但不适用于不同类。 如果您需要一个存在于单独类中的测试方法，请执行以下操作： 您可以通过将所述测试方法分配给一个组并将依赖测试方法配置为依赖于该组来实现。

这些都与 TestNG 中的相关测试有关。 让我知道您是否有任何疑问。

**学习愉快！**