一、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" failonerror="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>
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
好了,关于第一篇TestNg的文章到此结束,后面的文章会陆续更新关于官网的资料翻译,另外还会翻译一本关于TestNg的电子书,希望大家多多交流!
TestNg--The next generation of testing
原文:http://blog.csdn.net/wangwenjun69/article/details/19131529