TestNG系列-第五章 测试方法、测试类和测试分组(续6)-代码运行TestNG和BeanShell

13 代码中运行testNG
可以在自己的代码中运行Testng
TestListenerAdapter tla = new TestListenerAdapter();TestNG testng = new TestNG();testng.setTestClasses(new Class[] { Run2.class });testng.addListener(tla);testng.run();
在上面代码中创建一个TestNG对象并运行测试类Run2。也增加了TestListener。我们可以使用适配器类org.testng.TestListenerAdapter 或者自己实现接口   org.testng.ITestListener 。这个接口包含不同的回调方法,这些方法让我们跟踪测试启动,运行成功和失败等
类似的,我们可以用testng.xml来调用TestNG,或者创建一个虚拟的testng.xml。为了实现这个,我们可以使用包   org.testng.xml 中的类   XmlClass XmlTest , 等。每个类对应XML的标签。
假如要创建如下的虚拟文件:
<suite name="TmpSuite">
  <test name="TmpTest"> 
    <classes> 
      <class name="test.failures.Child"/> 
    </classes> 
  </test>
</suite>

可以使用如下的代码:
XmlSuite suite=new XmlSuite();
suite.setName("TmpSuite");
XmlTest test=new XmlTest(suite);
test.setName("TmpTest");
List<XmlClass> classes=new ArrayList<XmlClass>();
classes.add(new XmlClass("test.failures.Child"));
test.setXmlClasses(classes);

然后使用下面的代码将XMLsuite传给TestNG:
List<XmlSuite> suites = new ArrayList<XmlSuite>();suites.add(suite);TestNG tng = new TestNG();tng.setXmlSuites(suites);tng.run();

要了解所有API,可以参考JavaDocs 

14 BeanShell和高级分组选择
如果testng.xml中<include>和<exclude>标签并不能满足需求,可以使用BeanShell表达式来觉得一个测试方法是否应该或者不应该包含在测试中。可以直接在<test>标签下指定表达式:
<test name="BeanShell test">  
 <method-selectors>
     <method-selector>
       <script language="beanshell">
        <![CDATA[         groups.containsKey("test1")       ]]>
     </script>   
    </method-selector>  
 </method-selectors> 
 <!-- ... --> 
当TesngNG发现在testng.xml中有标签<script>时,会忽略当前<test>标签后续( subsequent)的<include>和<exclude>的分组和测试方法:Beanshell表达式是唯一的决定一个测试方法是否允许的方法。
下面是关于BeanShell额外的信息:
  • 必须返回boolean值。除了这一约束,任何有效的程序代码是允许的。
  • TestNG为了方便定义下属变量:
  java.lang.reflect.Method method:当前测试方法
org.testng.ITestNGMethod testngMethod :  当前测试方法的描述
   java.util.Map<String, String> groups : 当前测试方法所属的分组的Map
  • 为了避免繁琐的XML引用,使用CDATA声明包围表达式,
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值