测试开发必备技能-TestNG运行相关设置

接口自动化测试的必备神器~ 更多测开知识和技能,查看公众号【测试备忘录】

 1. 重新运行失败用例     

    每当suite中的测试失败时,TestNG都会在输出目录中创建一个名为testng-failed.xml的文件。该XML文件包含必要的信息,以此来重新运行失败的这些方法,从而使您可以快速重现失败,而不必运行整个测试。如下所示:​​​​​

java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs testng.xmljava -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs test-outputs\testng-failed.xml

注:testng-failed.xml包含所有必需的依赖方法,因此可以确保运行失败的方法时不会出现任何SKIP失败。

    有时,可能希望TestNG在测试失败时自动重试。在这种情况下,可以使用重试分析器(retry analyzer)。将重试分析器绑定到测试时,TestNG会自动调用重试分析器,以确定TestNG是否可以再次重试测试用例,来尝试查看刚刚失败的测试是否通过。 

    使用重试分析器的步骤:

  1.  构建接口org.testng.IRetryAnalyzer的实现

  2. 将实现绑定到@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;   @Override  public boolean retry(ITestResult result) {    if (retryCount < maxRetryCount) {      retryCount++;      return true;    }    return false;  }}
import org.testng.Assert;import org.testng.annotations.Test; public class TestclassSample {   @Test(retryAnalyzer = MyRetry.class)  public void test2() {    Assert.fail();  }}

 

2. Junit测试框架的支持

    TestNG可以运行JUnit 3和JUnit 4测试。您需要做的就是将JUnit jar文件放在类路径上,在testng.classNames属性中指定您的JUnit测试类,并将testng.junit属性设置为true:​​​​​​​

<test name="Test1" junit="true">  <classes>    <!-- ... -->

在这种情况下,TestNG根据在类路径上找到的JUnit版本执行类似于JUnit的方法:

  • JUnit 3

    • 类中所有以test *开头的方法都将运行。

    • 如果您的测试类上有一个方法setUp(),它将在每个测试方法之前调用。

    • 如果您的测试类上有一个方法tearDown(),它将在每个测试方法之后被调用

    • 如果您的测试类包含方法suite(),则将调用此方法返回的所有测试用例。

  • JUnit4

    • TestNG将使用org.junit.runner.JUnitCore运行程序运行测试用例。

 

3. 在程序中调用testng

可以很容易地从自己的程序中调用TestNG:​​​​​​​

TestListenerAdapter tla = new TestListenerAdapter();TestNG testng = new TestNG();testng.setTestClasses(new Class[] { Run2.class });testng.addListener(tla);testng.run();

    该示例创建一个TestNG对象并运行测试类Run2。它还添加了一个TestListener。可以使用适配器类org.testng.TestListenerAdapter或自己实现org.testng.ITestListener。该接口包含各种回调方法,可以跟踪测试的开始时间,成功时间,失败时间等。

    同样,您可以在testng.xml文件上调用TestNG,也可以自己创建一个虚拟的testng.xml文件。可以使用包org.testng.xml中的类:XmlClass,XmlTest等。这些类中的每一个都对应于它们的XML标记。

    假设想生成如下虚拟文件:​​​​​​​

<suite name="TmpSuite" >  <test name="TmpTest" >    <classes>      <class name="test.failures.Child"  />    <classes>    </test></suite>

    可以使用如下代码:​​​​​​​

XmlSuite suite = new XmlSuite();suite.setName("TmpSuite"); XmlTest test = new XmlTest(suite);test.setName("TmpTest");List<XmlClass> classes = new ArrayList<XmlClass>();classes.add(new XmlClass("test.failures.Child"));test.setXmlClasses(classes) ;

    然后可以将此XmlSuite传递给TestNG:​​​​​​​

List<XmlSuite> suites = new ArrayList<XmlSuite>();suites.add(suite);TestNG tng = new TestNG();tng.setXmlSuites(suites);tng.run();

    欢迎关注我的微信公众号 【测试备忘录】,查看更多测开技能知识。一起学习交流~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值