首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TestNG 使 Java 单元测试轻而易举(2)

TestNG 使 Java 单元测试轻而易举(2)

TestNG 快速起步 TestNG 的测试类是普通的老式 Java 对象;您不需要扩展任何特殊的类,也不需要使用测试方法的任何命名约定:您只要用标注            @Test通知框架这个类的方法是测试。清单 1 演示了实用类 StringUtils的一个最简单的测试。它测试               StringUtils的两个方法: isEmpty()方法检测 String是否为空;               trim()方法从 String两端删除控制字符。请注意,其中使用了 Java 指令               assert来检测错误情况。
清单 1. 针对类 StringUtils            的一个测试用例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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类完成。
清单 2. TestNG            的配置文件
1
2
3
4
5
6
7
8
<!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 :
1
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            构建文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<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 中的页面类似的页面。
图 1. TestNG 创建的 HTML 报告
返回列表