TestNG 跳过测试的最佳实践是什么
TestNG支持多种方式跳过或忽略@Test的执行。根据需求,用户可以完全跳过一个测试而不执行它,或者根据特定条件跳过一个测试。如果在执行时条件满足,它会跳过测试中的剩余代码。
有以下几种方式来跳过@Test的执行:
- 在@Test中使用参数 enabled=false 。默认情况下,该参数为true。
-
使用 throw new SkipException(String message) 来跳过一个测试。
-
条件跳过-用户可以进行条件检查,如果条件满足,它会抛出SkipException并跳过代码的剩余部分。
但是,当我们谈论如何最佳实践跳过一个测试用例时,它取决于多个因素,比如功能是否可用、测试是否存在错误或者此测试对于进一步执行有依赖。
在本文中,我们将说明在存在对跳过测试的依赖关系时,最佳实践是什么。
步骤
- 步骤1:创建一个TestNG类-NewTestngClass。
-
步骤2:在类NewTestngClass中编写3个不同的@Test方法,如编程代码部分所示。
第一个@Test方法:
它将像普通方法一样执行。
第二个@Test方法:
它会抛出SkipException。TestNG会打印第一行代码,并在到达SkipExecution代码后跳过它。此处有一个静态方法实际上是跳过测试的方法,并且该方法在@Test中调用,以便可以轻松地忽略它,而不需要进一步的更改。
第三个@Test方法:
它依赖于第二个@Test方法。
- 步骤3:现在按照以下方式创建testNG.xml以运行TestNG类。
-
步骤4:现在,在IDE中运行testNG.xml或直接运行testNG类,或使用命令行进行编译和运行。
示例
以下是常见TestNG类NewTestngClass的代码:
src/NewTestngClass.java
import org.testng.SkipException;
import org.testng.annotations.Test;
public class NewTestngClass {
@Test()
public void testcase1(){
System.out.println("Testcase 1 - executed");
}
@Test
public void testcase2(){
System.out.println("Testcase 2 - skip exception example");
skipTest("BUG-1000-Functionality is Broken");
System.out.println("Testcase 2 - Do Not execute");
}
@Test(dependsOnMethods = { "testcase2" })
public void testcase3(){
System.out.println("Test Case3 - Conditional Skip");
}
public static void skipTest(String reason) {
throw new SkipException("Test voluntarily skipped. Reason: " + reason);
}
}
testng.xml
这是一个用于组织和运行TestNG测试用例的配置文件。
当只需要执行有限的测试用例而不是整个测试套件时,它非常方便。
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
<test name = "test1">
<classes>
<class name = "NewTestngClass"/>
</classes>
</test>
</suite>
输出
Testcase 2 - skip exception example
Test ignored.
Testcase 1 - executed
Test ignored.
===============================================
suite
Total tests run: 3, Passes: 1, Failures: 0, Skips: 2
===============================================