• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

  使 Java 单元测试轻而易举

发布: 2009-12-18 10:59 | 作者: 不详 | 来源: 领测国际软件测试网采编 | 查看: 25次 | 进入软件测试论坛讨论

领测软件测试网

  可以在两个不同的包中得到 TestNG:一个包要求 JDK 5.0,另一个包与 Java 语言 1.4 版本兼容。定义测试的时候,它们使用的语法略有差异:前者使用 JDK 5.0 标注,后者使用旧的 Javadoc 风格的标注。本文使用的是 JDK 5.0 版本,所以在继续阅读本文之前,需要对标注有基本的了解;您可以在 参考资料 中找到关于这个主题的 developerWorks 资源的链接。但是,您要知道 只有在编译和运行测试的时候 才需要 JDK 5.0,所以您仍然可以用自己喜欢的编译器来构建应用程序。实际上,您将用从 Jakarata 项目的 Web 站点下载的相同 JAR 文件来测试 Jakarta Common Lang 库。关于使用 Java 平台 1.4 版本的 TestNG 的更多细节,可以在 TestNG 的 Web 站点上找到。

  最后,请单击本文顶部或底部的 Code 图标,下载 j-testng-sample.zip 文件,其中包含一些示例,演示了如何用 TestNG 为 Jakarta Commons Lang 编写单元测试。在里面,可以找到这里给出的大多数代码,还有其他一些示例。阅读本文并不需要这些代码,但是它可以帮助您更加深入地理解在这里介绍的概念。

锚点

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

锚点

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   ")); }}

  但是,在运行测试之前,必须用特殊的 XML 文件配置 TestNG,习惯上把这个文件命名为 testng.xml。这个文件的语法非常简单,如清单 2 所示。这个文件首先定义测试套件 My test suite,这个套件只包含一个测试 First test,这个测试由 StringUtilsTest 类完成。

锚点

<!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 :

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 目标中相当简单的用法。

锚点

<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 中的页面类似的页面。

文章来源于领测软件测试网 https://www.ltesting.net/

52/5<12345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网