testNG的testng.xml文件

TestNG提供的annotaions用来辅助定义测试类。
TestNG的testng.xml配置文件用来辅助定义执行什么样的测试,即testng.xml更像是一个测试规划。
testng.xml配置文件的元数据引用 http://testng.org/testng-1.0.dtd ,其中定义了testng.xml中的元素、属性和顺序等。
1.
元素是testng.xml文件的根元素。
从DTD文件(如下所示)可以看出,可以包含一个元素,用以定义全局的组,该组对所有的测试可见。
可以包含多个元素,一个就定义了一个测试用例(其中可能包含多个测试方法)。
[html]   view plain   copy
  1. >  

示例如下:
[html]   view plain   copy
  1. >  
  2.     
  3.  name="Suite1" verbose="1" >  
  4.     
  5.       
  6.         name="..." />  
  7.         name="..." />  
  8.       
  9.     
  10.    
  11.    name="Regression1">  
  12.        ...  
  13.     
  14.   



2.
元素是的子元素,用以定义一个测试用例。定义测试用例可以通过
[html]   view plain   copy
  1. >  

1). 表示以测试类的方式定义测试用例,粒度较小。示例如下:
[html]   view plain   copy
  1. >  
  2.     
  3.  name="Suite1" verbose="1" >  
  4.    name="Regression1">  
  5.       
  6.        name="test.sample.ParameterSample"/>  
  7.        name="test.sample.ParameterTest"/>  
  8.       
  9.     
  10.   

2). 表示以测试类所在的包的方式定义测试用例,包中的所有测试类都被涉及,粒度较大。
[html]   view plain   copy
  1. >  
  2.    
  3.  name="Suite1" verbose="1" >  
  4.    name="Regression1"   >  
  5.       
  6.        name="test.sample" />  
  7.      
  8.    
  9.   

3). 元素中的元素
我们知道,中可以定义一个全局的。而这里元素中也可以定义一个自己的,其中定义的组仅对当前所在的测试用例可见。示例如下:
[html]   view plain   copy
  1.  name="Regression1">  
  2.     
  3.       
  4.        name="brokenTests"  />  
  5.        name="checkinTests"  />  
  6.       
  7.     
  8.     
  9.     
  10.      ...  
  11.     
  12.   

注意:在testng.xml配置文件中,中可以定义多个,那么这些的执行顺序默认按照其在中出现的先后顺序。当然,也可以提供的preserve-order='false'改变默认顺序。
3.
可以通过定义测试用例,但只是在测试类或类包的层次上,那么能不能具体到测试类的某个方法呢?
对于中的一个,可以提供设置测试方法。示例如下:
[html]   view plain   copy
  1.  name="Regression1">  
  2.     
  3.    
  4.      name="test.Test1">  
  5.         
  6.          name="m1" />  
  7.          name="m2" />  
  8.         
  9.       
  10.    
  11.      name="test.Test2" />  
  12.    
  13.     
  14.   




==========================================================================================

  1.  version="1.0" encoding="UTF-8"?>  
  2. >  
  3.  name="suitename" junit="false" verbose="3" parallel="false" thread-count="5" configfailurepolicy=" style="font-family:Arial;"> style="font-size: 14px; line-height: 26px;">skipannotations="javadoc" time-out="10000" skipfailedinvocationcounts="true" data-provider-thread-count="5" object-factory="classname" allow-return-values="true">    
  4.       
  5.          path="/path/to/suitefile1">    
  6.          path="/path/to/suitefile2">  
  7.         
  8.      name="par1" value="value1">    
  9.      name="par2" value="value2">  
  10.       
  11.           
  12.              name="classname" priority="1">   
  13.              language="java">    
  14.           
  15.       
  16.      name="testename" junit="false" verbose="3" parallel="false" thread-count="5" annotations="javadoc" time-out="10000" enabled="true" skipfailedinvocationcounts="true" preserve-order="true" allow-return-values="true">   
  17.          name="par1" value="value1">    
  18.          name="par2" value="value2">  
  19.           
  20.              name="xxx">   
  21.                  name="" description="" invocation-numbers="" />    
  22.                  name="" description="" invocation-numbers="" />  
  23.               
  24.               
  25.                  name="" />    
  26.                  name="" />    
  27.               
  28.               
  29.                  name="" depends-on="">   
  30.                  name="" depends-on="">  
  31.               
  32.           
  33.           
  34.              name="classname">   
  35.                   
  36.                      name="par3" value="value3">  
  37.                      name="" description="" invocation-numbers="">  
  38.                      name="">  
  39.                   
  40.                   
  41.               
  42.               
  43.           
  44.              name="" />    
  45.              name="">  
  46.                  name="" description="" invocation-numbers="">  
  47.                  name="">  
  48.               
  49.           
  50.           
  51.              class-name="classname1" />    
  52.              class-name="classname2" />  
  53.           
  54.       
  55.       
  56.    

testng.xml文件节点属性说明:
suite属性说明:
@name: suite的名称,必须参数    
@junit:是否以Junit模式运行,可选值(true | false),默认"false"
@verbose:命令行信息打印等级,不会影响测试报告输出内容;可选值(1|2|3|4|5) 
@parallel:是否多线程并发运行测试;可选值(false | methods | tests | classes | instances),默认 "false"
@thread-count:当为并发执行时的线程池数量,默认为"5"
@configfailurepolicy:一旦Before/After Class/Methods这些方法失败后,是继续执行测试还是跳过测试;可选值 (skip | continue),默认"skip"
@annotations:获取注解的位置,如果为"javadoc", 则使用javadoc注解,否则使用jdk注解
@time-out:为具体执行单元设定一个超时时间,具体参照parallel的执行单元设置;单位为毫秒
@skipfailedinvocationcounts:是否跳过失败的调用,可选值(true | false),默认"false"
@data-provider-thread-count:并发执行时data-provider的线程池数量,默认为"10"
@object-factory:一个实现IObjectFactory接口的类,用来实例测试对象
@allow-return-values:是否允许返回函数值,可选值(true | false),默认"false"
@preserve-order:顺序执行开关,可选值(true | false) "true"
@group-by-instances:是否按实例分组,可选值(true | false) "false"

test属性说明:
@name:test的名字,必选参数;测试报告中会有体现
@junit:是否以Junit模式运行,可选值(true | false),默认"false"
@verbose:命令行信息打印等级,不会影响测试报告输出内容;可选值(1|2|3|4|5) 
@parallel:是否多线程并发运行测试;可选值(false | methods | tests | classes | instances),默认 "false"
@thread-count:当为并发执行时的线程池数量,默认为"5"
@annotations:获取注解的位置,如果为"javadoc", 则使用javadoc注解,否则使用jdk5注解
@time-out:为具体执行单元设定一个超时时间,具体参照parallel的执行单元设置;单位为毫秒
@enabled:设置当前test是否生效,可选值(true | false),默认"true" 
@skipfailedinvocationcounts:是否跳过失败的调用,可选值(true | false),默认"false"
@preserve-order:顺序执行开关,可选值(true | false) "true"
@group-by-instances:是否按实例分组,可选值(true | false) "false"
@allow-return-values:是否允许返回函数值,可选值(true | false),默认"false"

你可能感兴趣的:(testNG的testng.xml文件)