TestNG教程系列二:第一个TestNG案例

通过教程一,相信你已经搭建好了相关的环境了。以下编写一个简单的例子,其中肯定会有很多不理解的地方,后续教程中会逐一讲解。

TestNG 快速起步

TestNG 的测试类是普通的老式 Java 对象;您不需要扩展任何特殊的类,也不需要使用测试方法的任何命名约定:您只要用标注 @Test通知框架这个类的方法是测试。清单 1 演示了实用类 StringUtils的一个最简单的测试。它测试 StringUtils的两个方法:isEmpty()方法检测String是否为空; trim()方法从 String两端删除控制字符。请注意,其中使用了 Java 指令 assert来检测错误情况。

清单 1. 针对类 StringUtils 的一个测试用例
 package tests; 
 import com.beust.testng.annotations.*; 
 import org.apache.commons.lang.StringUtils; 
 public class StringUtilsTest 
 { 
	 @Test 
	 public void isEmpty() 
	 { 
		 assert StringUtils.isBlank(null); 
		 assert StringUtils.isBlank(""); 
	 } 
	 @Test 
	 public void trim() 
	 { 
		 assert "foo".equals(StringUtils.trim("  foo   ")); 
	 } 
 }
此时,在Eclipse中需要引入对应的TestNG的jar包。右键run TestNG,第一个案例即完成。

第二步扩展,用特殊的 XML 文件配置 TestNG,习惯上把这个文件命名为 testng.xml。这个文件的语法非常简单,如清单 2 所示。这个文件首先定义测试套件 My test suite,这个套件只包含一个测试 First test,这个测试由 StringUtilsTest类完成。

清单 2. TestNG 的配置文件
 <!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" > 
 <suite name="My test suite"> 
  <test name="First test"> 
    <classes> 
       <class name="tests.StringUtilsTest" /> 
    </classes> 
  </test> 
 </suite>

如果这个示例 testng.xml 文件看起来没什么用处(只有一个测试类),那么好消息是:这实际上是您定义测试套件时 惟一需要编写的文件。还记得 JUnit 过去的日子么?在那些日子里,套件的定义可能分布在多个文件中:JUnit 的 TestSuite文件,属性文件,还有当然缺不了的 Ant 构建文件。使用 TestNG,所有必需的数据都集中在 testng.xml 文件中。不需要额外的 TestSuite文件和构建文件。

要运行测试,请用 javac编译类,可用以下命令调用 TestNG 或者在Eclipse中运行也可:

java -ea -classpath .;testng.jar;commons-lang-2.0.jar com.beust.testng.TestNG testng.xml
在这里,选项  -ea 告诉 JVM 处理断言(在断言失败时抛出异常);运行这个例子只需要 testng.jar 和 commons-lang-2.0.jar 这两个库,而 com.beust.testng.TestNG 是 TestNG 的主类。对于所有那些已经非常高兴地忘记了  java 和  javac 的神秘语法的开发人员来说,还提供了一个有用的 Ant 任务。作为例子,清单 3 演示了本文发布的示例应用程序的 Ant 构建文件。请注意与类  com.beust.testng.TestNGAntTask 关联的 testng 任务的定义,以及它在  test 目标中相当简单的用法。

清单 3. 带有 TestNG 任务的 Ant 构建文件
 <project name="sample" default="test" basedir="."> 
   <!-- COMPILE TESTS--> 
   <path id="cpath"> 
      <pathelement location="testng.jar"/> 
      <pathelement location="commons-lang-2.0.jar"/> 
   </path> 
   <target name="compile"> 
      <echo message="compiling tests"/> 
      <mkdir dir="classes"/> 
      <javac   debug="true"
         source="1.5" classpathref="cpath"
         srcdir="src" destdir="classes"/> 
   </target> 
   <!-- RUN TESTS--> 
   <taskdef name="testng"
      classname="com.beust.testng.TestNGAntTask"
      classpathref="cpath"/> 
   <path id="runpath"> 
      <path refid="cpath"/> 
      <pathelement location="classes"/> 
   </path> 
   <target name="test" depends="compile"> 
      <echo message="running tests"/> 
      <testng fork="yes" classpathref="runpath" outputDir="test-output"> 
         <fileset dir="src" includes="testng.xml"/> 
         <jvmarg value="-ea" /> 
      </testng> 
   </target> 
 </project>

如果一切正常,那么应当在控制台中看到测试结果。而且,TestNG 还在当前目录下自动创建了一个叫做 test-output 的文件夹,并在其中创建了一份非常好的 HTML 报告。如果打开该报告并装入 index.html,就可以看到与图 1 中的页面类似的页面。恭喜你已经完成了一个完整的TestNG测试案例。

图 1. TestNG 创建的 HTML 报告

TestNG 创建的 HTML 报告

总结:通过以上的过程,我们做以下总结。

一、编写一个测试通常分为三步:

● 编写测试业务逻辑,并且在你的代码中插入 TestNG annotations 。
● 在 testng.xml 或 build.xml 添加你的测试信息。例如类名,希望运行的组等等。
● 运行TestNG。
你在文档中会使用到如下的概念,是不是很多不理解,请往后面继续学习:
● 一套测试(suite)由一个XML文件所表示。它能够包含一个或者多个测试, <suite> 标记来定义。
● 用 <test> 标记来表示一个测试,并且可以包含一个或者多个TestNG类。
● 所谓TestNG类,是一个Java类,它至少包含一个TestNG annotation。它由<class> 标记表示,并且可以包含一个或着多个测试方法。所有annotation的列表并且给出扼要的解释。它会告诉你很多TestNG所提供的功能,但是你需要详细阅读其余部分来获得关于这些注解更详细的信息。
● 测试方法,就是一个普通的Java方法,在由@Test标记。TestNG测试可以通过@BeforeXXX和@AfterXXX annotations来标记,允许在特定的生命周期点上执行一些Java逻辑,这些点可以是上述列表中任意的内容。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值