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 通过向 Assert.assertTrue 方法传递一个false 布尔值使其失败,该方法用于测试中的真值条件。

创建自定义日志类

/work/testng/src 中创建另一个名为CustomListener.java的新类。

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

/work/testng/src 中创建 testng.xml 以执行测试用例。

<?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 将调用附加到测试套件的所有侦听器。

当我们需要在测试执行期间查看测试执行的持续状态时,主要使用日志记录侦听器。

testng_test_results.htm
广告