我是 TestNG 的创建者和“下一代测试”一书的作者,所以这里有一些(显然是有偏见的)想法。
对于功能性(或端到端/集成/系统,无论您喜欢什么术语)测试,TestNG 提供了一些 JUnit 没有的功能,并且用户发现这些功能非常有用:
1) 您可以告诉 TestNG 在您定义的线程池中同时运行所有测试(XML 文件中的一行更改)。这是非常可配置的,因此非多线程的测试仍然可以在单线程中运行。
2) 你可以告诉 TestNG 从 p 个线程调用你的测试方法 n 次。这使您可以很好地了解您正在测试的代码的线程安全性。
- 测试依赖关系和确定性排序。这对于集成测试非常有用,在这种情况下,很常见的测试方法需要先前的测试方法才能成功,然后才能运行。由于这个特定的原因,TestNG 在 Selenium 社区中非常流行(“如果登录测试失败,请不要费心测试我网站的这个页面”)。
测试依赖项的另一个直接优势是 TestNG 可以告诉您“1 个方法失败,99 个方法被跳过”,这比“100 个方法失败”的结果准确得多。
TestNG 有很多很多的功能,我很高兴在这里或我们的邮件列表 ( http://groups.google.com/group/testng-users ) 上回答问题。