学习的经验与大家分享,有问题大家可以共同探讨。

初识TestNG

上一篇 / 下一篇  2011-08-30 22:27:09 / 个人分类:TestNG

绪论
TestNG 是一款测试框架,被设计用于解决大部分的测试需求,涵盖单元测试(测
试一个单独的类)和集成测试(测试有几个类、几个包甚至有几个框架组成的系统)

写一个测试一般需要如下3步:
  • 写出你需测试的业务逻辑并在你的代码上加上TestNG注解
  • 在 testng.xml 或build.xml中加上测试信息(例如:你需要运行的类名、组名)
  • 运行测试
本文档涵盖的主题包括:
  • 一个suite使用一个xml文件来定义 。该suite可以包含一个或多个test且该suite使用<suite>标签来定义。
  • 一个test使用<test>标签来定义,该test可以包含一个或多个TestNG类
  • 一个TestNG类就是一个Java类,它至少包含一个TestNG注解。一个TestNg类使用<class>标签来定义,可以包含一个或多个方法。
  • 一个测试方法就是一个在你的代码中使用@test注解标注的java方法
一个TestNG测试可以使用使用@BeforeXXX或@AfterXXX注解被配置为,用于在某一切入点之前或之后执行一些代码逻辑,这些切入点可以是上述所列项中的任何一项。
手册的其它部分将阐述如下内容:

  • 对所有注解的一个简单阐述。这将让你对TestNG提供的功能有一个整体认识。如果你想获得更详细的信息, 你还需要参照关于每个注解的描述。
  • 对testing.xml语法及如何配置的描述
  • 关于各种特征的详细描述以及如何把注解和testing.xml结合在一起使用。
注解
这里是对TestNG中的注解的简单描述。
  • @BeforSuite  被标注的方法将在本Suite中所有测试运行之前运行
  • @AfterSuite  被标注的方法将在本Suite中所有测试运行之后运行
  • @BeforeTest  被标注的方法将在本测试运行之前运行
  • @AfterTest   被标注的方法将在本测试运行之后运行
  • @BeforeGroups 被标注的方法将在本groups中所有测试运行之前运行
  • @AfterGroups 被标注的方法将在本groups中所有测试运行之后运行
  • @BeforeClass 被标注的方法将在本class中的所有方法执行之前运行
  • @AfterClass  被标注的方法将在本class中的所有方法执行之后运行
  • @BeforeMethod 被标注的方法将在每一个测试方法前执行
  • @AfterMethod  被标注的方法将在每一个测试方法后执行
alwaysRun  用于before类方法中时(beforeSuite, beforeTest, beforeTestClass 和
beforeTestMethod 但不包括beforeGroups):如果被设为true,被标注的
方法不管属于哪个groups都将被执行
用于after类方法中时(afterSuite, afterClass, ..):如果被设置为true,
被标注的将总能执行不论之前是否有方法出错或被跳过。

dependsOnGroups  本method依赖的groups 列表
dependsOnMethods 本method依赖的method列表
enabled  : 指定class/method 是否可用
groups  : class/method从属的groups列表
inheritGroups :如果设定为true,本方法将从属于在class级别上被使用@test注解指定的组


  • @DataProvider 标记一个method 为另一个测试method 准备数据。被标记的method 须返回一个Object[][] ,其中的Object[]用于为测试方法的参数赋值。被标记为@test的method只有当@test注解的name的值与DataProvider的名字相等时,才能从Data Provider获取值。
name : Data Provider的名字

  • @Factory 标记一个method作为一个factory,用于为TestNG的测试类返回object。此方法必须返回Object[].
  • @Parameters 描述如何把参数传递到一个@Test标注的method上
value 用于为method的参数赋值的变量列表

  • @Test 将一个class或method标记为需要测试的一部分
alwayRun  如果被标记为true,此测试method 将始终运行即使其依赖的method 失败了
DataProvider 此测试方法的data Provider的名字
DataProviderClass 提供data Provider的类。 如果没有被指定,将从本测试方法所在的类或基类中寻找data Provider。如果被指定,data Provider需要被设定为static的。
dependsOnGroups 此method 所依赖的groups列表
dependsOnMethods 此method 所依赖的method列表
description 对于此测试method 的描述
enabled 指定class/method 是否可用
expectedException 此测试方法期待抛出的异常的列表。如果无异常抛出或抛出的异常的种类不符,那么此测试方法将被标记为failure。
groups 此class/method 从属的groups
invocationCount 此method被调用的次数
invocationTimeOut 此测试中所有调用执行的时间的总和。 如果没有指定invocationCount此属性将被忽略。
successPercentage 此method期待成功的百分比
sequential 如果设置为true,此测试类的所有方法被保证按序执行,即使这些正在运行的测试是被标记为parallel="true"的. 此属性只在class级别上起作用,如果使用在method上将被忽略。
timeOut 此测试耗费的最大毫秒数
threadPoolSize 此method所需的线程池的大小。此method按照在invocationCount指定的那样可以以多线程的方式被调用。


Note:如果没有指定invocationCount 此属性将被忽略。

testng.xml

你可以使用多种不同的方式运行TestNg:
  • 使用testing.xml文件
  • 使用ant
  • 从命令行
本节将描述testing.xml的格式(后面部分将涉及ant及命令行)

关于testing.xml的DTD文档,你可以在站点 [url]http://testng.org/testng-1.0.dtd [/url]查询到。

这里是testing.xml文件的一个例子:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"    verbose="1" > 
 <test name="Nopackage" >  
  <classes>       
   <class name="NoPackageTest"  />    
  </classes>  
 </test>  
 <test name="Regression1"   >  
  <classes> 
   <class name="test.sample.ParameterSample"  />   
   <class name="test.sample.ParameterTest" />   
  </classes>  
 </test>
</suite>
你可以将包名替换掉类名:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 <suite name="Suite1" verbose="1" >  
  <test name="Regression1"   > 
   <packages>    
    <package name="test.sample" /> 
   </packages>
  </test>
 </suite>
在这个例子中,TestNG将检索包test.sample中的所有类,并且只返回含有
TestNG注解的类。

你也可以指定包含的或不包含的groups和methods

<test name="Regression1">
 <groups>  
  <run>  
   <exclude name="brokenTests"  /> 
   <include name="checkinTests"  />   
  </run> 
 </groups> 
 <classes> 
  <class name="test.IndividualMethodsTest"> 
   <methods>       
    <include name="testMethod" />
   </methods>    
  </class>  
 </classes>
</test>
你可以在testng.xml内定义新的组并且可以在属性中增加其它的信息,例如是否平行的
运行测试,使用了多少线程,是否运行Junit测试等等。可以参照DTD得到完整的
属性列表。


运行TestNG

TestNG可以按如下几种方式运行


TAG: testNG TestNG

 

评分:0

我来说两句

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 6041
  • 日志数: 9
  • 建立时间: 2011-08-23
  • 更新时间: 2012-02-22

RSS订阅

Open Toolbar