TestNG忽略或者禁用测试

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

有时我们想忽略一个TestNG测试方法,有很多方法可以实现。

TestNG @Test启用参数

我们可以通过在@Test注解中添加enabled = false来禁用或者忽略测试方法。
让我们看一个忽略此方法的简单示例。

package com.theitroad.utils;

import org.testng.annotations.Test;

public class TestNGExample {

	@Test
	public void foo() {
		System.out.println("Running foo test");
	}
	
	@Test(enabled=false)
	public void bar() {
		System.out.println("Running bar test");
	}
	
	@Test(groups="zoo")
	public void zoo() {
		System.out.println("Running zoo test");
	}
	
	@Test(groups="test")
	public void base() {
		System.out.println("Running base test");
	}
}

当执行上述测试类时,我们得到以下输出,确认未执行bar()方法。

[RemoteTestNG] detected TestNG version 6.14.3
Running base test
Running foo test
Running zoo test
PASSED: base
PASSED: foo
PASSED: zoo

此方法有很大的缺点,每次我们想禁用一个方法时,都需要进行代码更改并再次编译我们的类。

XML套件中的TestNG禁用测试

TestNG XML套件文件提供了很多选项。
我们可以从执行中排除测试方法以及组。
让我们创建一个简单的TestNG XML套件文件,其中将排除foo方法。
我们还将在测试执行中排除" zoo"。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="TestNG Excludes Test Suite" guice-stage="DEVELOPMENT">
	<groups>
		<run>
			<exclude name="zoo"></exclude>
		</run>
	</groups>
	<test thread-count="5" name="TestNG Excludes Test" verbose="2">
		<groups>
			<run>
				<exclude name="zoo"></exclude>
			</run>
		</groups>
		<classes>
			<class name="com.theitroad.utils.TestNGExample">
				<methods>
					<exclude name="foo"></exclude>
				</methods>
			</class>
		</classes>
	</test>
</suite>

在XML文件上方运行TestNG Suite,它将产生以下输出。

注意,我们可以在套件级别以及测试级别将组排除在执行之外。
上面的XML代码同时显示了两种方式,但是在这种情况下,它是多余的,我们可以删除其中的任何一种配置。