TestNG - 自定义日志记录

  • 简述

    我们之前已经阅读了 TestNG 为日志记录和报告提供的不同选项。现在,让我们学习如何开始使用它们。首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener 接口进行日志记录。
  • 创建测试用例类

    创建一个java类,比如说, SampleTest.java/work/testng/src.
    
    import org.testng.Assert;
    import org.testng.annotations.Test;
    public class SampleTest {
       @Test
       public void testMethodOne() {
          Assert.assertTrue(true);
       }
       @Test
       public void testMethodTwo() {
          Assert.assertTrue(false);
       }
       @Test(dependsOnMethods={"testMethodTwo"})
       public void testMethodThree() {
          Assert.assertTrue(true);
       }
    }
    
    前面的测试类包含三个测试方法,其中testMethodOnetestMethodThree将在执行时通过,而testMethodTwo通过将false布尔值传递给 Assert.assertTrue 方法而失败,该方法用于测试中的真值条件。
  • 创建自定义日志类

    创建另一个名为的新类 CustomListener.java/work/testng/src.
    
    import org.testng.ITestResult;
    import org.testng.TestListenerAdapter;
    public class CustomListener extends TestListenerAdapter{
       private int m_count = 0;
       @Override
       public void onTestFailure(ITestResult tr) {
          log(tr.getName()+ "--Test method failed\n");
       }
       @Override
       public void onTestSkipped(ITestResult tr) {
          log(tr.getName()+ "--Test method skipped\n");
       }
       @Override
       public void onTestSuccess(ITestResult tr) {
          log(tr.getName()+ "--Test method success\n");
       }
       private void log(String string) {
          System.out.print(string);
          if (++m_count % 40 == 0) {
             System.out.println("");
          }
       }
    }
    
    上面的类扩展了TestListenerAdapter,它使用空方法实现了ITestListener。因此,无需从接口覆盖其他方法。如果您愿意,您可以直接实现该接口。
  • 创建 testng.xml

    在中创建 testng.xml /work/testng/src 执行测试用例。
    
    <?xml version = "1.0" encoding = "UTF-8"?>
    <suite name = "Simple Logger Suite">
       <listeners>
          <listener class-name = "CustomListener" />
       </listeners>
       <test name = "Simple Logger test">
          <classes>
             <class name = "SampleTest" />
          </classes>
       </test>
    </suite>
    
    使用 javac 编译 SampleTest、CustomListener 类。
    
    /work/testng/src$ javac CustomListener.java SampleTest.java
    
    现在,运行 testng.xml。
    
    /work/testng/src$ java org.testng.TestNG testng.xml
    
    验证输出。
    
    testMethodOne--Test method success
    testMethodTwo--Test method failed
    testMethodThree--Test method skipped
    ===============================================
    Simple Logger Suite
    Total tests run: 3, Failures: 1, Skips: 1
    ===============================================
    
    我们创建了一个自定义记录器类,它实现了 ITestListener 接口并将其作为一个监听器附加到 TestNG 测试套件中。这个侦听器类的方法在测试开始、测试失败、测试成功等时由 TestNG 调用。可以实现多个侦听器并将其添加到测试套件执行中,TestNG 将调用附加到测试套件的所有侦听器。
    日志侦听器主要用于在测试执行时我们需要查看测试执行的连续状态。