注解。
可以在任意的大线程池中,使用各种策略运行测试(所有方法都可以拥有自己的线程或者每个测试类拥有一个线程等等)。
代码多线程安全测试。
灵活的测试配置。
支持数据驱动测试(@DataProvider)。
支持参数。
强大的执行模型(不再用TestSuite)。
支持各种工具和插件(Eclipse、IDEA、Maven等……)。
可以更灵活地嵌入BeanShell。
默认JDK运行时功能和日志记录(无依赖关系)。
依赖应用服务测试的方式。
我开始使用TestNG是出于对一些JUnit缺陷的无奈。我把这些缺陷记录在博客和这里。阅读这些条目或许会让你更能体会到我试用TestNG所想达到的目的。你也可以快速浏览一下主要特性概述和一个描述具体示例的文章,示例使用了几种TestNG特性提供更直观和高可维护性的测试设计。
这是一个非常简单的测试:
package example1; 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()在测试类被创建后,其它任何测试方法运行前被调用。在这个例子中,我们要运行快速组,所以aFastTest()被调用时aSlowTest()则被跳过。
注意事项:
做上述事情不需要扩展类或实现接口。
尽管上面的示例使用JUnit的惯例,但是我们的方法可以叫做任何你喜欢的名字。是注解告诉TestNG它们是什么。
一个测试方法可以属于一个或多个组。
当你编译完你的测试类到build目录,你可以通过命令行运行一个ant的任务或者一个XML文件来调用你的测试:
<project default="test"> <path id="cp"> <pathelement location="lib/testng-testng-5.13.1.jar"/> <pathelement location="build"/> </path> <taskdef name="testng" classpathref="cp" classname="org.testng.TestNGAntTask" /> <target name="test"> <testng classpathref="cp" groups="fast"> <classfileset dir="build" includes="example1/*.class"/> </testng> </target> </project> |
使用ant去调用:
c:> ant
Buildfile: build.xml
test:
[testng] Fast test
[testng] ===============================================
[testng] Suite for Command line test
[testng] Total tests run: 1, Failures: 0, Skips: 0
[testng] ===============================================
BUILD SUCCESSFUL Total time: 4 seconds
你可以浏览你的测试的结果:
start test-output\index.html (on Windows)
需求
TestNG需要JDK 7或更高版本。
邮件清单
在Google Groups上可以找到用户邮件清单。
如果你有兴趣为TestNG工作,可以加入 developer mailing-list。
如果你只是想知道TestNG的最新版本信息,你可以加入 TestNG announcement mailing-list。
项目链接
如果你有兴趣为TestNG或者一个IDE的插件做贡献,你可以在这里找到他们:
TestNG
Eclipse plug-in
IDEA IntelliJ plug-in
NetBeans plug-in
错误报告
如果你认为你发现一个错误,可以这样报告它:
创建一个小项目,能使我们能够重现这个bug。在大多数情况下,一个或两个Java源文件和testng.xml文件应该足够了。然后你可以压缩后用电子邮件发到 testng-dev mailing-list 或把它放在一个开源的托管网站,如github或Google code等,用邮件通知testng-dev让我们知道。请确保这个项目是自我包含这样我们可以马上构建(删除依赖外部或自主框架等……)。
如果你观察到的缺陷在Eclipse插件,确保你的示例项目包含.project和.classpath文件。
文件错误。
要了解更多信息,你可以下载TestNG,阅读手册 或这浏览的上面的链接.
许可证
Apache 2.0
官方网站:http://testng.org/
开源地址:https://github.com/cbeust/testng.git