`
longgangbai
  • 浏览: 7337968 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

TestNG简单的学习(七)TestNG编程方式运行

阅读更多

TestNG官方网站:

http://testng.org/doc/documentation-main.html

官方文档:

5.12 - JUnit tests

TestNG can run JUnit 3 and JUnit 4 tests. All you need to do is put the JUnit jar file on the classpath, specify your JUnit test classes in the testng.classNames property and set the testng.junit property to true:

 

 

testng.xml

<test name="Test1" junit="true">
  <classes>
    <!-- ...
-->

 

The behavior of TestNG in this case is similar to JUnit depending on the JUnit version found on the class path:

 

  • JUnit 3:
    • All methods starting with test* in your classes will be run
    • If there is a method setUp() on your test class, it will be invoked before every test method
    • If there is a method tearDown() on your test class, it will be invoked before after every test method
    • If your test class contains a method suite(), all the tests returned by this method will be invoked
  • JUnit 4:
    • TestNG will use the org.junit.runner.JUnitCore runner to run your tests

<!------------------------------------- JUNIT ------------------------------------>

<!------------------------------------- RUNNING TESTNG ------------------------------------>

5.13 - Running TestNG programmatically

You can invoke TestNG from your own programs very easily:

Java

TestListenerAdapter tla =
new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] {
Run2.
class });
testng.addListener(tla);
testng.run();

This example creates a TestNG object and runs the test class Run2. It also adds a TestListener. You can either use the adapter class org.testng.TestListenerAdapter or implement org.testng.ITestListener yourself. This interface contains various callback methods that let you keep track of when a test starts, succeeds, fails, etc...

Similary, you can invoke TestNG on a testng.xml file or you can create a virtual testng.xml file yourself. In order to do this, you can use the classes found the package org.testng.xml: XmlClass, XmlTest, etc... Each of these classes correspond to their XML tag counterpart.

For example, suppose you want to create the following virtual file:

 

<suite name="TmpSuite" >
  <test
name=
"TmpTest" >
    <classes>
      <class name="test.failures.Child" />
    <classes>
    </test>
</suite>

You would use the following code:

 
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)
;

And then you can pass this XmlSuite to TestNG:

 
List<XmlSuite> suites =
new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();

 

Please see the JavaDocs for the entire API.

 

<!------------------------------------- BEANSHELL ------------------------------------>

5.14 - BeanShell and advanced group selection

 

If the <include> and <exclude> tags in testng.xml are not enough for your needs, you can use a BeanShell expression to decide whether a certain test method should be included in a test run or not. You specify this expression just under the <test> tag:

 

testng.xml

<test name="BeanShell test">
   <method-selectors>
     <method-selector>
       <script language="beanshell"><![CDATA[
         groups.containsKey("test1")
       ]]></script>
     </method-selector>
   </method-selectors>
  <!--
... -->

When a <script> tag is found in testng.xml, TestNG will ignore subsequent <include> and <exclude> of groups and methods in the current <test> tag: your BeanShell expression will be the only way to decide whether a test method is included or not.

 

 

Here are additional information on the BeanShell script:

 

  • It must return a boolean value. Except for this constraint, any valid BeanShell code is allowed (for example, you might want to return true during week days and false during weekends, which would allow you to run tests differently depending on the date).
  • TestNG defines the following variables for your convenience:
    java.lang.reflect.Method method: the current test method.
    org.testng.ITestNGMethod testngMethod: the description of the current test method.
    java.util.Map<String, String> groups: a map of the groups the current test method belongs to.
  • You might want to surround your expression with a CDATA declaration (as shown above) to avoid tedious quoting of reserved XML characters).
分享到:
评论

相关推荐

    TestNG中文手册学习笔记

    本教程的目标读者是希望学习 TestNG 的软件专业人员,要求读者具备基本的 Java 编程知识、文本编辑器的使用经验以及对软件开发和测试流程的理解。TestNG 相较于 JUnit,克服了如下的局限性: 1. 初始设计仅针对单元...

    testNG单元测试学习总结

    ### TestNG单元测试学习总结 #### 一、TestNG框架简介 **1.1 概念** TestNG(Test Next Generation)是一个高级测试框架,它继承了JUnit与NUnit的优点,并在此基础上添加了许多新的功能。TestNG是一个开源的、...

    testng-6.9.4和testng-6.8.8.zip

    TestNG是Java编程语言中的一款强大的自动化测试框架,与JUnit和Selenium等工具配合使用,为软件测试提供了全面且灵活的解决方案。TestNG由Cédric Beust创建,旨在提高测试效率并支持更复杂的测试场景,如并发测试、...

    TestNG学习笔记

    ### TestNG 学习笔记概览 #### 一、JUnit 的局限性与 TestNG 的优势 ##### JUnit 缺陷概述 - **最初的用途限制**:JUnit 最初被设计为一个仅适用于单元测试的框架,但随着时间的发展,其功能已扩展至支持多种类型...

    eclipse-testng离线包

    TestNG是Java编程环境中一个强大的测试框架,与JUnit相比,它提供了更丰富的功能,如支持多种测试类型、灵活的测试配置、并发测试等。Eclipse是广受欢迎的Java集成开发环境(IDE),它允许开发者通过插件来扩展其...

    testng-6.9.7 源码

    TestNG是Java编程语言中的一款强大的测试框架,与JUnit相比,它提供了更丰富的功能和更灵活的测试配置。TestNG-6.9.7源码分析将带我们深入理解其内部工作原理,这对于想要定制测试框架或者提升测试技能的开发者来说...

    testng-6.10.jar

    TestNG是Java编程语言中的一款强大且功能丰富的自动化测试框架,尤其在进行单元测试和集成测试时表现出色。"testng-6.10.jar"是TestNG的特定版本,即6.10版本的库文件,以Java Archive (JAR)格式封装,方便开发者在...

    java+selenium+maven+testng自动化测试框架实例(实际项目)

    TestNG可以和Selenium结合使用,用于组织和运行测试用例,以及生成详细的测试报告。它支持注解,使得测试代码更加简洁易读。 在"atlantis"这个项目中,可能包含了以下组件和结构: 1. **源代码**:Java类文件,...

    TestNG学习文档英文版.pdf版

    这个教程旨在为软件专业人员提供对TestNG框架的深入理解,帮助他们以简单易懂的方式学习TestNG,并将其应用到企业级应用的测试中,确保软件的稳定性和可靠性。 本教程面向对学习TestNG框架感兴趣的软件专业人员,...

    testng-6.8.8文件

    TestNG是Java编程语言中的一款强大且功能丰富的测试框架,主要设计用于自动化软件测试。它由Cedric Beust创建,旨在提供比JUnit更高级的功能,支持更复杂的测试配置和执行模型。TestNG-6.8.8是该框架的一个特定版本...

    TestNg 官网下载源文件

    TestNG是一款功能强大的自动化测试框架,广泛应用于Java编程语言中,尤其在软件测试领域具有很高的声誉。它由著名测试框架JUnit的前核心开发者Selenium的主要作者Cedric Beust创建,旨在提供更全面、灵活和可扩展的...

    testng架包下载

    TestNG是一款功能强大的自动化测试框架,尤其在Java编程语言中被广泛应用。它的设计灵感来源于JUnit,但提供了更多高级特性和灵活性,使得测试更加方便、高效。TestNG的主要目标是简化和改进软件测试过程,支持多种...

    testng-6.1.jar下载

    TestNG是Java编程语言中的一款高级测试框架,与JUnit相比,它提供了更多元化和强大的功能,尤其在并发测试和测试套件的组织方面。标题中的"testng-6.1.jar"指的是TestNG库的特定版本,即6.1版本的JAR文件。这个文件...

    myeclipse2017 TestNg6.15插件

    TestNG是一款功能强大的测试框架,尤其在Java编程领域中被广泛应用。它是由Cédric Beust创建的,作为JUnit的增强版本,旨在提供更全面、更灵活的测试解决方案。TestNG 6.15是该框架的一个特定版本,带来了诸多改进...

    selenium+testng页面测试

    6. **Ant**: Ant是Apache软件基金会的一个Java构建工具,虽然在现代项目中常常被Maven或Gradle取代,但在本案例中可能涉及到的是使用Ant来编译和运行TestNG测试用例。Ant通过XML配置文件定义构建任务,包括编译、...

    TestNG-Spring-Example

    TestNG是一个强大的测试框架,它提供了比JUnit更丰富的功能,如并行测试、测试套件、报告等,而Spring则是一个全面的企业级应用框架,用于简化Java开发,特别是依赖注入和面向切面编程。 在这个名为"TestNG-Spring-...

    testng 6.14 离线包

    TestNG是Java编程环境中的一款强大的测试框架,它扩展了JUnit的功能,提供了更多高级特性,如支持数据驱动测试、并行测试、回调机制等。TestNG 6.14 是其在2017年发布的一个稳定版本,适用于各种自动化测试场景。 ...

    testng 6.8.8 源码及 jar包

    TestNG是Java编程语言中的一款强大且功能丰富的测试框架,由Cedric Beust创建,其版本6.8.8是该框架的一个稳定版本。它不仅支持单元测试,还特别适用于集成测试,提供了多种测试模式,如配置方法、依赖注入、数据...

Global site tag (gtag.js) - Google Analytics