忽略测试
TestNG可以让你忽略类、特殊包、包及其子中的所有@Test方法。
当在测试方法级别使用@Ignore 注解,在功能上与@Test(enabled=false).一样。
以下例子将忽略类中所有tests。
import org.testng.annotations.Ignore;
import org.testng.annotations.Test;
@Ignore
public class IgnoreTest {@Testpublic void testMethod1() {}@Testpublic void testMethod2() {}
}
@Ignore注解比@Test方法注解有更高的优先级。
To ignore all tests in a particular package, you just need to create package-info.java and add the @Ignore annotation to it. Here’s a sample :
@Ignore
package com.testng.master;import org.testng.annotations.Ignore;
This causes all the @Test methods to be ignored in the package com.testng.master and all of its sub-packages.
重运行失败用例
每次测试套件中的测试失败时,TestNG都会在输出目录中创建一个名为testng-failed.xml的文件。这个XML文件包含重新运行仅这些失败方法所需的信息,使您能够迅速重现失败,而无需运行整个测试。因此,一个典型的会话看起来会像这样:
java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs testng.xml
java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs test-outputs\testng-failed.xml
请注意,testng-failed.xml文件将包含所有必要的依赖方法,以确保您能够运行失败的方法而不会遇到任何跳过失败的情况。
有时,您可能希望TestNG在测试失败时自动重试。在这些情况下,您可以使用重试分析器。
当您将重试分析器绑定到测试时,TestNG会自动调用重试分析器来确定是否可以再次重试测试用例,以尝试查看刚刚失败的测试现在是否通过。以下是您如何使用重试分析器:
构建org.testng.IRetryAnalyzer接口的实现
将这个实现绑定到@Test注解上,例如@Test(retryAnalyzer = LocalRetry.class)
下面是一个重试分析器的示例实现,它最多会重试测试三次。
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;public class MyRetry implements IRetryAnalyzer {private int retryCount = 0;private static final int maxRetryCount = 3;@Overridepublic boolean retry(ITestResult result) {if (retryCount < maxRetryCount) {retryCount++;return true;}return false;}
}
可以看到,一共运行了四次,第一个失败被忽略,又执行了三次,最后一次失败报错。
Dry Run
“Dry Run” 是一个在计算机科学和软件测试中常用的术语,通常指的是模拟执行某个过程或测试,但不真正执行它。在软件测试的上下文中,Dry Run 是一种在实际运行测试之前预览或模拟测试执行的方法。它允许测试人员或开发人员检查测试脚本和配置是否正确,而无需实际执行测试并可能产生副作用或消耗资源。
对于TestNG测试,Dry Run 可能意味着执行以下步骤:
-
检查测试配置:确认测试套件和测试用例的配置是否正确,包括依赖项、参数和任何需要的资源。
-
预览测试执行:模拟测试执行流程,查看哪些测试方法将被调用,以及它们的执行顺序。
-
验证测试数据:确保测试所需的数据(如输入数据、测试数据、环境配置等)是可用的,并且是正确的。
-
检查测试逻辑:确认测试逻辑是否按照预期编写,包括断言和验证点。
-
识别潜在问题:通过Dry Run,可能能够提前发现测试脚本中的潜在问题,如缺失的依赖项、错误的配置或逻辑错误。
-
避免不必要的资源消耗:由于Dry Run 不真正执行测试,因此它避免了因执行测试而可能产生的资源消耗(如时间、内存、网络带宽等)。
在TestNG中,虽然没有一个内置的“Dry Run”功能,但你可以通过编写自定义的脚本或使用集成开发环境(IDE)的功能来模拟这个过程。例如,你可以编写一个脚本来读取测试套件和测试用例,并输出它们的信息,而不是真正执行它们。此外,一些IDE(如IntelliJ IDEA、Eclipse等)提供了测试运行配置,允许你查看将要运行的测试,而不真正执行它们。
可以启用TestNG的dry run模式,通过给JVM传参 -Dtestng.mode.dryrun=true