TestNG – 依赖测试示例

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

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

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 允许您创建一个示例测试方法,该方法依赖于同一类的另一个测试方法。

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进行配置。

现在开始运行测试。

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

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

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

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

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取决于测试方法testTwotestThree。 在使用Test注解时,通过使用属性dependsOnMethods进行配置。

现在开始运行测试。

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

通过查看控制台消息,我们可以看到方法testTwotestThreetestOne之前执行。

继承的依赖测试

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

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进行配置。

现在开始运行测试。

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

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

依赖组的测试

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

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来配置的。

现在开始运行测试。

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

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

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