`
lixw
  • 浏览: 197321 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用TestNG的八大理由

阅读更多

     转自【http://juvenshun.spaces.live.com/blog/cns!CF7D1BC903C111E1!313.entry?fl=cat

 

  1. 使用Annotation来标识测试。
    传统xUnit用命名规范来标识测试,难免有时会给人带来束缚。使用Annotation,束缚消失了,而且功能更强大了,一句@BeforeClass 就可以让一个方法在整个类之前运行,JUnit3可做不到。此外,编译器会帮我们检查Annotation的,所以,不容易犯低级错误。
  2. 支持测试分组。
    一个测试类的方法分属不同的组,给我们带来的好处是,我们可以选择性的运行测试方法,更灵活的管理测试之间的关系。单元测试和继承测试可以分属不同的组,随时运行单元测试,晚上运行继承测试。像这样:@Test ( groups = { "integration" })
  3. 支持测试依赖
    传 统的xUnit框架提倡测试孤立,也就是说一个测试和另外一个测试必须是完全独立的,这是一条很好的实践。但是考虑这样一种情况:有CRUD四个方法访问 数据库,如果数据库连接坏了,四个方法全会报错,可实际上,CRUD逻辑可没有问题。使用TestNG,我们可以先写个testDB方法,然后让CRUD 依赖它,像这样:@Test ( dependsOnMethods = { "testDB" })。如果testDB红了,CRUD就不会再运行。怎么样?是不是更合理了?
  4. 使用testng.xml管理测试运行
    不再需要一层一层的写TestSuit了,只要集中的在testng.xml里配置,你想运行什么组,什么包,什么类,甚至什么方法。可以有多个testng.xml,这样就可以定义多组规则了。而且,这个xml的dtd 可是相当的简单,不到150行,其中大部分是注释。
  5. 数据驱动测试
    你是否曾经在一个测试方法里面写类似的代码?
    assertEquals(4, add(1,3));
    assertEquals(4, add(2,2));
    assertEquals(4, add(4,0));
    它们是数据驱动的,测试逻辑没有任何区别。TestNG通过@DataProvider支持了数据驱动测试,测试代码可以变成这样:assertEquals(result, add(x,y)); 其中,result, x 和 y是通过方法参数传进来的。
  6. 多线程测试
    使用JUnit,这是不可能是实现的,TestNG给了我们惊喜,使用这样的配置:<suite name = "My suite" parallel = "methods" thread-count = "5" >,就可以让每个方法在不通的线程里运行了。
  7. 内容详实的测试报告
    可以通过'verbose '属性来控制consol的舒服详细程度,TestNG还能帮你生成丰富的HTML测试报告,老板看到这样的东西肯定开心啦。
  8. 与主流工具的成熟集成
    我在eclipse,在Maven中都跑过了TestNG,感觉还是相当的舒畅的,TestNG和ant和spring等集成也没什么问题,大家都很支持它。
TestNG非常不错的官方文档:http://testng.org/doc/documentation-main.html
不停留在介绍技术表面的书:Next Generation Java Testing
InfoQ上对TestNG的视频介绍:Designing for Testability
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics