- TestNG 教程
- TestNG - 首页
- TestNG - 概述
- TestNG - 环境配置
- TestNG -编写测试用例
- TestNG - 基本注解
- TestNG - 执行流程
- TestNG - 执行测试
- TestNG - 套件测试
- TestNG - 忽略测试
- TestNG - 组测试
- TestNG - 异常测试
- TestNG - 依赖测试
- TestNG - 参数化测试
- TestNG - 运行JUnit测试
- TestNG - 测试结果
- TestNG - 注解转换器
- TestNG - 断言
- TestNG - 并行执行
- TestNG - 与ANT集成
- TestNG - 与Eclipse集成
- TestNG - TestNG vs JUnit
- TestNG 有用资源
- TestNG - 快速指南
- TestNG - 有用资源
- TestNG - 讨论
TestNG - 自定义报表
在本节中,我们将通过示例介绍编写自定义报表并将其附加到TestNG的方法。要编写自定义报表类,我们的扩展类应该实现IReporter接口。让我们创建一个包含自定义报表的示例。
创建测试用例类
创建一个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); } }
上述测试类包含三个测试方法,其中testMethodOne和testMethodThree执行时将通过,而testMethodTwo通过向Assert.assertTrue方法(用于测试中的真值条件)传递一个false布尔值使其失败。
创建自定义报表类
在/work/testng/src目录下创建另一个名为CustomReporter.java的新类。
import java.util.List; import java.util.Map; import org.testng.IReporter; import org.testng.ISuite; import org.testng.ISuiteResult; import org.testng.ITestContext; import org.testng.xml.XmlSuite; public class CustomReporter implements IReporter{ @Override public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) { //Iterating over each suite included in the test for (ISuite suite : suites) { //Following code gets the suite name String suiteName = suite.getName(); //Getting the results for the said suite Map<String, ISuiteResult> suiteResults = suite.getResults(); for (ISuiteResult sr : suiteResults.values()) { ITestContext tc = sr.getTestContext(); System.out.println("Passed tests for suite '" + suiteName + "' is:" + tc.getPassedTests().getAllResults().size()); System.out.println("Failed tests for suite '" + suiteName + "' is:" + tc.getFailedTests().getAllResults().size()); System.out.println("Skipped tests for suite '" + suiteName + "' is:" + tc.getSkippedTests().getAllResults().size()); } } } }
上述类实现了org.testng.IReporter接口。它实现了IReporter接口中generateReport方法的定义。该方法接受三个参数:
xmlSuite,这是正在执行的testng XML文件中提到的套件列表。
suites,包含测试执行后的套件信息。此对象包含关于包、类、测试方法及其测试执行结果的所有信息。
outputDirectory,包含报表生成位置的输出文件夹路径信息。
创建testng.xml
在/work/testng/src目录下创建testng.xml来执行测试用例。
<?xml version = "1.0" encoding = "UTF-8"?> <suite name = "Simple Reporter Suite"> <listeners> <listener class-name = "CustomReporter" /> </listeners> <test name = "Simple Reporter test"> <classes> <class name = "SampleTest" /> </classes> </test> </suite>
使用javac编译SampleTest和CustomReporter类。
/work/testng/src$ javac CustomReporter.java SampleTest.java
现在,运行testng.xml。
/work/testng/src$ java org.testng.TestNG testng.xml
验证输出。
=============================================== Simple Reporter Suite Total tests run: 3, Failures: 1, Skips: 1 =============================================== Passed tests for suite 'Simple Reporter Suite' is:1 Failed tests for suite 'Simple Reporter Suite' is:1 Skipped tests for suite 'Simple Reporter Suite' is:1
上述示例显示了一个简单的自定义报表,它为测试执行中包含的每个套件在控制台上打印失败、通过和跳过的测试数量。报表主要用于生成测试执行的最终报告。扩展可以根据报表要求生成XML、HTML、XLS、CSV或文本格式的文件。
testng_test_results.htm
广告