TestNG组

时间:2020-02-23 14:41:56  来源:igfitidea点击:

TestNG Groups是其非常重要和有用的功能之一。
我们可以为TestNG方法指定组,它可以与@ Before,@ After和@Test方法一起使用。

TestNG组

一旦为TestNG方法定义了组,就可以运行特定的组。
我们可以包括要执行的组,不包括组。
我们还可以创建一组组。
让我们用几种方法创建一个TestNG测试类,并将它们分配给不同的组。

package com.theitroad.groups;

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TestNGGroupsExample {

	@Test(groups = "foo")
	public void foo() {
		System.out.println("foo");
	}

	@Test(groups = "bar")
	public void bar() {
		System.out.println("bar");
	}

	@Test(groups = { "alpha", "sanity" })
	public void alpha() {
		System.out.println("alpha");
	}

	@Test(groups = { "beta", "integration" })
	public void beta() {
		System.out.println("beta");
	}

	@BeforeClass(groups = "integration")
	public void beforeIntegrationTests() {
		System.out.println("Before Running integration test methods");
	}

	@AfterClass(groups = "integration")
	public void afterIntegrationTests() {
		System.out.println("Before Running integration test methods");
	}

}

使用Eclipse TestNG运行配置运行TestNG组

当我们在Eclipse中执行TestNG类时,它将执行所有组。
我们可以为特定的组创建一个运行配置以执行。
前往运行|运行配置。

浏览您的项目,然后选择"组"复选框,然后单击"浏览"按钮。
它将显示项目中定义的所有组。

选择要执行的组,您将看到下图所示的配置。

单击"应用"按钮以保存配置。
单击"运行"按钮运行配置,它将仅执行指定的组。

您应该在Eclipse控制台中获得以下输出。

[RemoteTestNG] detected TestNG version 6.14.3
bar
foo
PASSED: bar
PASSED: foo

===============================================
  GRP-bar,foo
  Tests run: 2, Failures: 0, Skips: 0
===============================================

===============================================
TestNG-Examples by groups
Total tests run: 2, Failures: 0, Skips: 0
===============================================

TestNG XML Suite组示例

我们可以使用groups元素将测试套件配置为运行特定的组。
在TestNG XML套件下面,将仅运行foobar组方法。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="TestNGXMLTest Test Suite">
	<groups>
		<run>
			<include name="foo"></include>
			<include name="bar"></include>
		</run>
	</groups>
	<test name="TestNGXMLTest Test">
		<classes>
			<class name="com.theitroad.groups.TestNGGroupsExample" 
		</classes>
	</test>
</suite>

TestNG XML包含排除组示例

有时,我们的方法将成为多个组的一部分。
如果该方法是包含组和排除组的一部分,则将其从执行中排除。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="TestNGXMLTest Test Suite">
	<groups>
		<run>
			<include name="alpha"></include>
			<include name="beta"></include>
			<exclude name="integration"></exclude>
		</run>
	</groups>
	<test name="TestNGXMLTest Test">
		<classes>
			<class name="com.theitroad.groups.TestNGGroupsExample" 
		</classes>
	</test>
</suite>

上面的测试套件将不会执行" beta()"方法,因为其组之一在排除组列表中。

TestNG组正则表达式

TestNG组配置支持正则表达式。
如果我们将包含的组更改为" include name ="。

  • o。
    *"",则它将仅执行foo()和beta()方法。
    这是因为它们属于名称包含字母" o"的组。

TestNG默认组

如果我们希望所有Test类方法都属于特定组,则可以在类级别进行配置。

@Test(groups="default")
public class TestNGGroupsExample {
//test methods
}

TestNG组组

我们可以在TestNG XML文件中定义组组。
然后,我们可以在测试套件中使用它。
请注意,只能在测试级别而不是套件级别内部进行此操作。

让我们看一个简单的示例,该示例在TestNG XML文件中定义组,然后使用它们。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="TestNGXMLTest Test Suite">

	<test name="TestNGXMLTest Test">
		<groups>
			<define name="include-groups">
				<include name="sanity" 
				<include name="integration" 
			</define>
			<define name="exclude-groups">
				<include name="foo" 
				<include name="bar" 
			</define>
			<run>
				<include name="include-groups" 
				<exclude name="exclude-groups" 
			</run>
		</groups>
		<classes>
			<class name="com.theitroad.groups.TestNGGroupsExample" 
		</classes>
	</test>
</suite>