TestNG是一个源于JUnit和NUnit但有所超越的新测试框架。TestNG引入的一些新功能使自己更强大和易用:
- 注解。
- 可以在任意的大线程池中,使用各种策略运行测试(所有方法都可以拥有自己的线程或者每个测试类拥有一个线程等等)。
- 代码多线程安全测试。
- 灵活的测试配置。
- 支持数据驱动测试(@DataProvider)。
- 支持参数。
- 强大的执行模型(不再用TestSuite)。
- 支持各种工具和插件(Eclipse、IDEA、Maven等……)。
- 可以更灵活地嵌入BeanShell。
- 默认JDK运行时功能和日志记录(无依赖关系)。
- 依赖应用服务测试的方式。
TestNG旨在涵盖所有类型测试的,如单元测试、功能测试、端到端测试、集成测试等等……
我开始使用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文件来调用你的测试:
使用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或更高版本。
邮件清单
项目链接
如果你有兴趣为TestNG或者一个IDE的插件做贡献,你可以在这里找到他们:
错误报告
如果你认为你发现一个错误,可以这样报告它:
- 创建一个小项目,能使我们能够重现这个bug。在大多数情况下,一个或两个Java源文件和testng.xml文件应该足够了。然后你可以压缩后用电子邮件发到 testng-dev mailing-list 或把它放在一个开源的托管网站,如github或Google code等,用邮件通知testng-dev让我们知道。请确保这个项目是自我包含这样我们可以马上构建(删除依赖外部或自主框架等……)。
- 如果你观察到的缺陷在Eclipse插件,确保你的示例项目包含.project和.classpath文件。
- 文件错误。
要了解更多信息,你可以下载TestNG,阅读手册 或这浏览的上面的链接.
许可证
官方网站:testng.org/
开源地址:github.com/cbeust/test…