测试开发必备技能-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();

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

猜你喜欢

转载自blog.csdn.net/hashsabr/article/details/114005940