谈谈单元测试之(四):测试工具 TestNG

前言

上一篇文章《测试工具 JUnit 4》中提到了 JUnit 4,并对 JUnit 4 做了简单的讨论,这篇文章我们将要围绕另一款测试工具讨论 —— TestNG。其实,这篇文章应该写在《测试工具 JUnit 3》之后,和《测试工具 JUnit 4》之前,为什么这么说呢?

那是因为,TestNG 是在 JUnit 3 之后出来了,而 JUnit 4 是在 TestNG 推出之后,综合 JUnit 3 的优点,并且借鉴了 TestNG 的优势,才推出的。但是,考虑到,JUnit 3 、4 都是 JUnit 系列的,所以就放到一块了,而没有把他们分开。所以,大家知道这里的关系就好了。

简介

TestNG是一个用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由多个类多个包甚至多个外部框架组成的整个系统,例如应用服务器)。

步骤

  • 编写测试的业务逻辑并在代码中插入 TestNG Annotation
  • 将测试信息添加到 testng.xml 文件或者 build.xml 中
  • 运行 TestNG

一些概念

  • suite(套件)

由 xml 文件描述,它包含一个或多个测试并被定义为 <suite> 标签。

  • test(测试)

由 <test> 描述,并包含一个或者多个 TestNG 类。

  • class(类)

由一个或多个方法组成。

注解

  • @BeforeSuite

被注解的方法,会在当前 suite 中所有测试方法执行之前被调用。

  • @AfterSuite

被注解的方法,会在当前 suite 中所有测试方法执行之后被调用。

  • @BeforeTest

被注解的方法,会在测试(原文就是测试,不是测试方法)运行之前被调用。

  • @AfterTest

被注解的方法,会在测试(原文就是测试,不是测试方法)运行之后被调用。

  • @BeforeGroups

被注解的方法,会在执行组列表中之前被调用。这个方法会在每个组中第一次测试方法调用之前被调用。

  • @AfterGroups

被注解的方法,会在执行组列表中之后被调用。这个方法会在每个组中最后一个测试方法调用之后被调用。

  • @BeforeClass

被注解的方法,会在当前类第一个测试方法运行之前被调用。

  • @AfterClass

被注解的方法,会在当前类所有测试方法运行之后被调用。

  • @BeforeMethod

被注解的方法,会在运行每个测试方法之前被调用。

  • @AfterMethod

被注解的方法,会在每个测试方法运行之后被调用 。

配置

调用 TestNG 有几种不同的方法,使用 testng.xml 文件,使用 ant ,从命令行敲命令。当然,使用 Java IDE的话,可以不用写 testng.xml 文件,不过不代表用不到,只不过是 IDE 会自动生成一个 testng.xml 文件,不用你再手动的写了。 如果从学习的角度来看,testng.xml 文件的配置,我们还是要学的,最起码要了解它是怎么配置的,以便看到它了不会感到陌生。

testng.xml 文件可以到 testng 的官网去 copy ,官网介绍的很详细(如果你英文还说的过去,建议去官网)。

<span style="font-family:Microsoft YaHei;"><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
  <test name="Nopackage" >
    <classes>
       <class name="NoPackageTest" />
    </classes>
  </test>

  <test name="Regression1">
    <classes>
      <class name="test.sample.ParameterSample"/>
      <class name="test.sample.ParameterTest"/>
    </classes>
  </test>
</suite></span>

当然,你还可以指定包名替代类名,就像这样:

<span style="font-family:Microsoft YaHei;"><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
  <test name="Regression1"   >
    <packages>
      <package name="test.sample" />
   </packages>
 </test>
</suite></span>

不止这些,你同样可以指定包含或不包含的组和方法,Such as:

<span style="font-family:Microsoft YaHei;"><test name="Regression1">
  <groups>
    <run>
      <exclude name="brokenTests"  />
      <include name="checkinTests"  />
    </run>
  </groups>

  <classes>
    <class name="test.IndividualMethodsTest">
      <methods>
        <include name="testMethod" />
      </methods>
    </class>
  </classes>
</test></span>

你同样可以在 testng.xml 中定义新的组,指定属性的额外详细情况,比如:是否并行运行测试,使用多少线程,是否运行 JUnit 测试,等等。。。

至于,运行 TestNG 的那些命令,官网上已经说的很清楚了,如果你需要中文的资料,那么我不会告诉你去找 Goo哥 或者 Baidu,这里就不再赘述了。需要注意一点的是,TestNG 需要的 JDK 版本是 1.5 以上的。为什么这样,想想 JDK 1.5 的新特性,我想你已经知道了,这里就不再废话了。

生命周期

使用 TestNG,不仅可以指定测试方法,还可以用专门的标注 @Configuration指定类中的其他特定方法,这些方法叫做 配置方法。配置方法有四种类型:

  • beforeTestClass 方法在类实例化之后,但是在测试方法运行之前执行。
  • afterTestClass 方法在类中的所有测试方法执行之后执行。
  • beforeTestMethod 方法在类中的任何测试方法执行之前执行。
  • afterTestMethod 方法在类中的每个测试方法执行之后执行。

结束语

本篇文章,主要是介绍了 TestNG 的基本功能,当然,TestNG 是非常强大的,这里没有时间细说,最后分享一个小例子,想学 TestNG 的可以下载下来运行一下。例子非常简单,可以通过与 JUnit 4 的例子进行对比,你就会发现,其实,他们还是都差不多的。毕竟,JUnit 4 也借鉴了 TestNG 的设计。

学好测试,编写健壮、漂亮的代码,节省下更多的时间学学新技术,陪陪家人,不也都挺好嘛。干嘛非要跟自己过不去,让那些混乱的代码逼着自己加班,你说是吧?

资料:TestNG 的 Demo
(IntelliJ IDEA)

谈谈单元测试之(四):测试工具 TestNG,布布扣,bubuko.com

时间: 2024-10-28 19:36:25

谈谈单元测试之(四):测试工具 TestNG的相关文章

谈谈单元测试之(三):测试工具 JUnit 4

前言 上一篇文章<测试工具 JUnit 3>简单的讨论了 JUnit 3 的使用以及内部的方法.这篇文章将会在 JUnit 3 的基础上,讨论一下 JUnit 4 的新特性.同时,与 JUnit 3 做一个简单的对比.那么,废话就不多说了,直接进入正题. 介绍 JUnit 4.x 是利用了 Java 5 的特性(Annotation)的优势,使得测试比起 3.x 版本更加的方便简单,JUnit 4.x 不是旧版本的简单升级,它是一个全新的框架,整个框架的包结构已经彻底改变,但 4.x 版本仍然

谈谈单元测试之(二):测试工具 JUnit 3

前言 上一篇文章<为什么要进行烦人的单元测试?>讨论了一下现阶段软件开发中,程序员们测试情况的现状.这篇文章中,我打算介绍一下单元测试的工具(插件),并且推荐大家以后在开发中,真正的用上单元测试,用好单元测试. 说明 这篇文章的主题,主要是介绍一下 JUnit 3,虽然 JUnit 3 已经不推荐使用了,但它也曾是风靡一时.这里旨在讨论一下 JUnit 3 的使用,以及它的内部构造,就当是为下一篇文章介绍 JUnit 4 做铺垫吧.之前已经把单元测试的重要性都讲出来了,这里就不再赘述了,直接进

谈谈单元测试之(一):为什么要进行烦人的单元测试?

前言 最近,在网上看到过一个调查,调查的内容是"程序员在项目开发中编写单元测试的情况".当然,至于调查的结果,我想聪明的你已经可以猜到了.高达 58.3% 的比例,一般情况下不写单元测试,只有偶尔的情况才会写写.16.6% 的程序员从来都不写单元测试.只有很少的一部分程序员才会在自己的代码中进行单元测试,并保证方法测试通过.看到这些,你想到了什么? 现状 虽然,这个调查可能会有些片面性,但这也基本反应了国内程序员的开发现状,很少有程序员能够比较认真的去编写单元测试.而且,甚至有的程序员

前端单元测试总结及测试工具介绍

1.为什么需要单元测试 正确性:测试可以验证代码的正确性,在上线前做到心里有底 自动化:当然手工也可以测试,通过console可以打印出内部信息,但是这是一次性的事情,下次测试还需要从头来过,效率不能得到保证.通过编写测试用例,可以做到一次编写,多次运行 解释性:测试用例用于测试接口.模块的重要性,那么在测试用例中就会涉及如何使用这些API.其他开发人员如果要使用这些API,那阅读测试用例是一种很好地途径,有时比文档说明更清晰 驱动开发,指导设计:代码被测试的前提是代码本身的可测试性,那么要保证

Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz 安装#tar zxvf http_load-12mar2006.tar.gz#cd http_load-12mar

Android高手速成--第四部分 开发工具及测试工具

第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能项目地址:https://github.com/jonfhancock/JsonToJava在线演示:http://jsontojava.appspot.com/ IntelliJ Plugin for And

Android开源项目第四篇——开发及测试工具篇

本文为那些不错的Android开源项目第四篇——开发工具篇,主要介绍Android开发工具和测试工具相关的开源项目. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和团体篇 1.Buck facebook开源的Android编译工具,效率是ant的两倍.主要优点在于

测试工具Jtest:用于代码优化和测试——《软件工程综合实践专题》第四次个人博客

测试工具Jtest:用于代码优化和测试 一.Jtest简介 Jtest 是 Parasoft 公司推出的一款针对 Java 语言的自动化代码优化和测试工具,它通过自动化实现对 Java 应用程序的单元测试和编码规范校验,从而提高代码的可靠性以及 Java 软件开发团队的开发效率. 二.主要功能 1)通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性.Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来.

ASP.NET Core搭建多层网站架构【3-使用xUnit编写单元测试之简单方法测试】

2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-使用xUnit编写单元测试之简单方法测试] 文章目录 此分支项目代码 上一章节已经建立了Common公共类库,本章节介绍编写简单的单元测试,对上一章节的公共类库中EnumExtension方法编写单元测试,同时也是介绍上一章节中公共类库EnumExtension的使用方法 新建测试项目 在tests解决方案文件夹下,新建xUni