TestNG学习-测试用例结果展示

简介: TestNG学习-测试用例结果展示

1. 成功、失败和断言

   成功:如果测试完成而没有引发任何异常,或者引发了预期的异常,则该测试用例被视为成功。

   失败:测试用例通常由可能引发异常的调用或各种断言(使用Java“ assert”关键字)组成。“断言”失败将触发AssertionErrorException,进而将方法标记为失败(如果未看到断言错误,在JVM上使用-ea设置来查看)。

   测试用例断言的示例如下:

@Test
public void verifyLastName() {
  assert "Beust".equals(m_lastName) : "Expected name Beust, for" + m_lastName;
}

   TestNG还支持JUnit的Assert类,可以对复杂对象执行断言:

import static org.testng.AssertJUnit.*;
//...
@Test
public void verify() {
  assertEquals("Beust", m_lastName);
}

   以上代码使用静态导入来使用assertEquals方法,不必在类之前添加前缀使用。


2. 结果记录

   测试运行的结果在启动SuiteRunner时指定的目录中的index.html文件中创建。该文件包含整个测试运行结果的各种其他HTML和文本文件的总体展示情况。

   使用TestNG与监听器(Listeners)和报告器(reporters)可以方便的生成自己的报告:

  • Listeners实现org.testng.ITestListener接口,并在测试开始,通过,失败等时实时通知。
  • reporters实现org.testng.IReporter接口,并在TestNG运行完所有suite时通知。IReporter实例接收描述整个测试运行的对象列表。

   具体使用场景:

  • 如果要生成测试运行的PDF报告,不需要实时通知测试运行情况,应该使用IReporter。
  • 如果想编写测试的实时报告,例如带有进度条的GUI等,则使用ITestListener。

   1)Listeners的示例

public class DotTestListener extends TestListenerAdapter {
  private int m_count = 0;
  @Override
  public void onTestFailure(ITestResult tr) {
    log("F");
  }
  @Override
  public void onTestSkipped(ITestResult tr) {
    log("S");
  }
  @Override
  public void onTestSuccess(ITestResult tr) {
    log(".");
  }
  private void log(String string) {
    System.out.print(string);
    if (++m_count % 40 == 0) {
      System.out.println("");
    }
  }
}

   其中“.”表示测试用例通过,F表示失败,S表示pass。可以根据需要自定义。

   java命令行执行:

java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -listener org.testng.reporters.DotTestListener test\testng.xml

   输出示例:

........................................
........................................
........................................
........................................
........................................
.........................
===============================================
TestNG JDK 1.8
Total tests run: 226, Failures: 0, Skips: 0
===============================================

   注:当使用-listener时,TestNG会自动确定要使用的监听器的类型。

   2)reporters使用

   org.testng.IReporter接口只有一个方法:

public void generateReport(List<ISuite> suites, String outputDirectory)

   当所有suites都已运行完成时,TestNG将调用此方法。


3. JunitReports

   TestNG包含一个可以获取TestNG结果并输出一个XML文件的监听器,然后可以将结果送到JUnitReport。 示例如下,可以通过ant任务创建report:

<target name="reports">
  <junitreport todir="test-report">
    <fileset dir="test-output">
      <include name="*/*.xml"/>
    </fileset>
    <report format="noframes"  todir="test-report"/>
  </junitreport>
</target>

   注:JDK 1.5和JUnitReports不兼容,需要指定“ noframes”使用。


4. Reporter API

   如果需要记录在生成的HTML报告中显示的消息,则可以使用org.testng.Reporter类。


5. XML Reports

   TestNG提供了XML reporter,用于捕获JUnit报告中不支持的TestNG的特定信息。当用户的测试环境需要使用具有TestNG特定信息的XML结果时,这个功能特别有用。可以使用-reporter通过命令行将该reporter注入TestNG。

   示例用法:

 -reporter org.testng.reporters.XMLReporter:generateTestResultAttributes=true,generateGroupsAttribute=true.

   下面是报告使用示例:

<testng-results>
  <suite name="Suite1">
    <groups>
      <group name="group1">
        <method signature="com.test.TestOne.test2()" name="test2" class="com.test.TestOne"/>
        <method signature="com.test.TestOne.test1()" name="test1" class="com.test.TestOne"/>
      </group>
      <group name="group2">
        <method signature="com.test.TestOne.test2()" name="test2" class="com.test.TestOne"/>
      </group>
    </groups>
    <test name="test1">
      <class name="com.test.TestOne">
        <test-method status="FAIL" signature="test1()" name="test1" duration-ms="0"
              started-at="2007-05-28T12:14:37Z" description="someDescription2"
              finished-at="2007-05-28T12:14:37Z">
          <exception class="java.lang.AssertionError">
            <short-stacktrace>
              <![CDATA[
                java.lang.AssertionError
                ... Removed 22 stack frames
              ]]>
            </short-stacktrace>
          </exception>
        </test-method>
        <test-method status="PASS" signature="test2()" name="test2" duration-ms="0"
              started-at="2007-05-28T12:14:37Z" description="someDescription1"
              finished-at="2007-05-28T12:14:37Z">
        </test-method>
        <test-method status="PASS" signature="setUp()" name="setUp" is-config="true" duration-ms="15"
              started-at="2007-05-28T12:14:37Z" finished-at="2007-05-28T12:14:37Z">
        </test-method>
      </class>
    </test>
  </suite>
</testng-results>

6. TestNG退出码

   当TestNG完成执行时,它将退出并返回一个代码。可以检查此返回码以了解故障的性质(如果有的话)。下表总结了TestNG当前使用的不同退出代码。

FailedWithinSuccess

Skipped

Failed

Status Code

Remarks

No

No

No

0

Passed tests

No

No

Yes

1

Failed tests

No

Yes

No

2

Skipped tests

No

Yes

Yes

3

Skipped/Failed tests

Yes

No

No

4

FailedWithinSuccess tests

Yes

No

Yes

5

FailedWithinSuccess/Failed tests

Yes

Yes

No

6

FailedWithinSuccess/Skipped tests

Yes

Yes

Yes

7

FailedWithinSuccess/Skipped/Failed tests

   欢迎关注交流~

相关文章
|
28天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
33 4
|
2月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
49 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
2月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
66 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
1月前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
40 2
|
1月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
2月前
|
测试技术 开发者
vertx的学习总结6之动态代理类和测试
本文是Vert.x学习系列的第六部分,介绍了如何使用动态代理在事件总线上公开服务,以及如何进行Vert.x组件的异步测试,包括动态代理的创建和使用,以及JUnit 5和Vert.x测试工具的结合使用。
28 3
vertx的学习总结6之动态代理类和测试
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
72 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
73 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
2月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
36 1
软件质量保护与测试(第2版)学习总结第一章
|
2月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
72 1