一、TestNg简介
TestNg是一个测试框架,灵感来自于Junit和NUnit,但是增加了很多新的功能,让他显得要比junit和Nunit更加的强大,这也就是为什么他从一出道就号称是下一代单元测试框架的原因,在本节中,我们通过一个很小的例子,让大家体验一下,什么事testNg,并且进行一下简单的联系
1、TestNg的官方网址,大家可以在上面进行下载
如果您是Maven的忠实粉丝,那么可以通过Maven的定位获得你想要的TestNg包
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
2
、TestNG的特性:
2.1 、完全注解
2.2 、你可以运行您的unit test在任意大的线程池中(所有的方法都有属于自己的线程,每一个class都有一个自己的线程等等)
2.3、灵活的测试配置文件
2.4、支持数据驱动测试(@DataProvider)
2.5、支持参数
2.6、功能强大的运行模式(不再需要TestSuite)
2.7、支持一系列的工具和插件(eclipse, IDEA, Maven, 等)
2.8、嵌入Beanshell脚本语言支持扩展
2.9、默认的JDK函数用于运行时和日志记录(不再依赖于其他第三方)
2.10、依赖于应用服务器的测试方法。
TestNg被设计成覆盖所有类型的测试,包括:单元测试,功能测试,端对端测试,集成测试,等等。
3、开始一个简单的TestNG演示吧(译者注:官网的例子不完整,我将其补充完整)
3.1、Java代码如下所示:
package example;
import org.testng.annotations.*;
public class SimpleTest {
@BeforeClass
public void setUp() {
// code that will be invoked when this test is instantiated
}
@Test(groups = { "fast" })
public void aFastTest() {
System.out.println("Fast test");
}
@Test(groups = { "slow" })
public void aSlowTest() {
System.out.println("Slow test");
}
}
解释:其中setUp方法被@BeforeClass标注,表示该方法在SimpleTest类创建后会首先执行,被@Test注解表示该方法是测试方法,其中groups属性表示该测试方法隶属于哪个组,关于groups属性,在后面的章节中将会介绍。
本例的意图是运行fast分组的test,然后slow将会被忽略掉,一些需要注意的事项:
1、无需继承某个类或者实现某个接口(junit4.x也是可以做到的)
2、每一个测试方法你可以随便起名字,可以被TestNg的标记标识(官方文档,个人觉得是废话)
3、一个测试方法可以属于一个或者多个分组。
3.2、接下来编写一个ANT脚本,进行单元测试的运行。
<?xml version="1.0"?>
<project name="testNg" basedir="." default="test">
<path id="test-path">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
<pathelement location="classes"/>
</path>
<path id="compile-path">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</path>
<taskdef name="testng" classpathref="test-path" classname="org.testng.TestNGAntTask" />
<target name="compile">
<javac srcdir="src" destdir="classes" failοnerrοr="true">
<classpath refid="compile-path">
</classpath>
</javac>
</target>
<target name="test" depends="compile">
<testng classpathref="test-path" groups="fast">
<classfileset dir="classes" includes="example/*.class"/>
</testng>
</target>
</project>
3.3、运行Ant脚本,记得要讲testng.jar放到lib下哈,运行结果如下所示:
Buildfile: E:\Execise\testng\chapter1\build.xml
compile:
[javac] E:\Execise\testng\chapter1\build.xml:20: warning: 'includeantruntime
' was not set, defaulting to build.sysclasspath=last; set to false for repeatabl
e builds
test:
[testng] [TestNG] Running:
[testng] Ant suite
[testng]
[testng] Fast test
[testng]
[testng] ===============================================
[testng] Ant suite
[testng] Total tests run: 1, Failures: 0, Skips: 0
[testng] ===============================================
[testng]
BUILD SUCCESSFUL
Total time: 2 seconds
3.4、testng比较强大的一点是,可以自动帮你生成一个测试报告,该报告会在 test-output。
好了,关于第一篇TestNg的文章到此结束,后面的文章会陆续更新关于官网的资料翻译,另外还会翻译一本关于TestNg的电子书,希望大家多多交流!