您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > TestNG
TestNG使Java单元测试轻而易举
作者:网络转载 发布时间:[ 2012/12/24 15:31:58 ] 推荐标签:

要运行测试,请用 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 目标中相当简单的用法。

清单 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 报告。

定义测试组
TestNG 另外一个有趣的特性是其定义测试组的能力。每个测试方法都可以与一个或多个组相关联,但可以选择只运行某个测试组。要把测试加入测试组,只要把组指定为 @Test 标注的参数,使用的语法如下:

@Test(groups = {"tests.string"})

在这个具体的例子中,您声明:标注的方法属于 tests.string 组。因为参数 groups 是一个数组,所以可以指定多个组,组名之间用逗号分隔。例如,在示例应用程序中,您可以为 String、Number 以及 boolean 创建不同的测试,然后如清单 4 所示配置 TestNG, 有选择地运行它们.

清单 4. 带有不同组的配置文件
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My suite">
<test name="Simple example">
<groups>
<run>
<include name="tests.string" />
<include name="tests.math" />
<exclude name="tests.boolean"/>
</run>
</groups>
<classes>
.... list classes here....
</classes>
</test>
</suite>

显然,当运行不同的测试组时,HTML 报告能够在单一列表中显示所有测试,也可以在独立的列表中显示每个组的测试,从而能够立即理解问题的来源。

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

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

测试类的生命周期

清单 5 演示了配置方法的一些示例。请注意,如果您使用组,那么配置方法也必须属于某个组。而且,配置方法的四种类型彼此之间不是互斥的,所以可以把方法定义成同时属于一种或多种配置方法类型。(作为例子,请参阅清单 5 中的 aroundTestMethods() 方法)。

清单 5. 配置方法示例
@Configuration(beforeTestClass = true, groups = {"tests.workflow"})
public void setUp()
{
System.out.println("Initializing...");
}

@Configuration(afterTestMethod = true, beforeTestMethod = true, groups = {"tests.workflow"})
public void aroundTestMethods()
{

System.out.println("Around Test");
}

TestNG 中的配置方法是 JUnit 的 setUp() 和 tearDown() 方法的增强版;它们的主要目的是为测试创建正确的执行上下文,并在测试用例执行之后刷新数据。

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd