TestNG是Java社区中除JUnit之外另一个流行的单元测试框架。NG是Next Generation的缩写,译为“下一代”。TestNG在JUnit的基础上增加了很多特性,读者可以访问其站点http://testng.org/获取更多信息。值得一提的是,《Next Generation Java Testing》(Java测试新技术,中文版已由机械工业出版社引进出版,书号为978-7-111-24550-6)一书专门介绍TestNG和相关测试技巧。
使用Maven运行TestNG十分方便。以10.1.3节中的account-captcha测试代码为例,首先需要删除POM中的JUnit依赖,加入TestNG依赖,见代码清单10-16。
代码清单10-16 加入TestNG依赖
与JUnit类似,TestNG的依赖范围应为test。此外,TestNG使用classifier jdk15和jdk14为不同的Java平台提供支持。
下一步需要将对JUnit的类库引用更改成对TestNG的类库引用。表10-1给出了常用类库的对应关系。
表10-1 JUnit和TestNG的常用类库对应关系
将JUnit的类库引用改成TestNG之后,在命令行输入mvn test,Maven就会自动运行那些符合命名模式的测试类。这一点与运行JUnit测试没有区别。
TestNG允许用户使用一个名为testng.xml的文件来配置想要运行的测试集合。例如,可以在account-captcha的项目根目录下创建一个testng.xml文件,配置只运行RandomGeneratorTest,如代码清单10-17所示。
代码清单10-17 TestNG的testng.xml
同时再配置maven-surefire-plugin使用该testng.xml,如代码清单10-18所示。
代码清单10-18 配置maven-surefire-plugin使用testng.xml
TestNG较JUnit的一大优势在于它支持测试组的概念,如下的注解会将测试方法加入到两个测试组util和medium中:
由于用户可以自由地标注方法所属的测试组,因此这种机制能让用户在方法级别对测试进行归类。这一点JUnit无法做到,它只能实现类级别的测试归类。
Maven用户可以使用代码清单10-19所示的配置运行一个或者多个TestNG测试组。
代码清单10-19 配置maven-surefire-plugin运行TestNG测试组
由于篇幅所限,这里不再介绍更多TestNG的测试技术,感兴趣的读者请访问TestNG站点。