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

TestNG简单的学习(十一)TestNG学习总结

阅读更多

       最近一直在学习关于TestNG方面的知识,根据最近的学习总结以下几点:

1.TestNG测试注解和Junit注解的不同以及生命周期:

TestNG测试的一个方法的生命周期:

                @BeforeClass(执行一次)

                @BeforeMethod(N个Test 方法执行N次)

                @Test Test方法(此注解可能在类上表示多个,在方法表示一个)

                @AfterMethod(N个Test 方法执行N次)

                @AfterClass(执行一次)

Junit4测试的一个方法的生命周期:

               @BeforeClass(执行一次)

              @Before(N个Test 方法执行N次)

               @Test Test方法

              @After(N个Test 方法执行N次)

              @AfterClass(执行一次)

2.测试@Test的使用范围和分组

下面为源代码自己看不解释:

package org.testng.annotations;

import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * Mark a class or a method as part of the test.
 *
 * @author Cedric Beust, Apr 26, 2004
 */
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({METHOD, TYPE, CONSTRUCTOR})
public @interface Test {
  /**
   * The list of groups this class/method belongs to.
   */
  public String[] groups() default {};

  /**
   * Whether methods on this class/method are enabled.
   */
  public boolean enabled() default true;

  /**
   * The list of variables used to fill the parameters of this method.
   * These variables must be defined in the property file.
   *
   * @deprecated Use @Parameters
   */
  @Deprecated
  public String[] parameters() default {};

  /**
   * The list of groups this method depends on.  Every method
   * member of one of these groups is guaranteed to have been
   * invoked before this method.  Furthermore, if any of these
   * methods was not a SUCCESS, this test method will not be
   * run and will be flagged as a SKIP.
   */
  public String[] dependsOnGroups() default {};

  /**
   * The list of methods this method depends on.  There is no guarantee
   * on the order on which the methods depended upon will be run, but you
   * are guaranteed that all these methods will be run before the test method
   * that contains this annotation is run.  Furthermore, if any of these
   * methods was not a SUCCESS, this test method will not be
   * run and will be flagged as a SKIP.
   *
   * If some of these methods have been overloaded, all the overloaded
   * versions will be run.
   */
  public String[] dependsOnMethods() default {};

  /**
   * The maximum number of milliseconds this test should take.
   * If it hasn't returned after this time, it will be marked as a FAIL.
   */
  public long timeOut() default 0;

  /**
   * The maximum number of milliseconds that the total number of invocations on this test
   * method should take.  This annotation will be ignored if the attribute invocationCount
   * is not specified on this method.
   * If it hasn't returned after this time, it will be marked as a FAIL.
   */
  public long invocationTimeOut() default 0;

  /**
   * The number of times this method should be invoked.
   */
  public int invocationCount() default 1;

  /**
   * The size of the thread pool for this method.  The method will be invoked
   * from multiple threads as specified by invocationCount.
   * Note:  this attribute is ignored if invocationCount is not specified
   */
  public int threadPoolSize() default 0;

  /**
   * The percentage of success expected from this method.
   */
  public int successPercentage() default 100;

  /**
   * The name of the data provider for this test method.
   * @see org.testng.annotations.DataProvider
   */
  public String dataProvider() default "";

  /**
   * The class where to look for the data provider.  If not
   * specified, the dataprovider will be looked on the class
   * of the current test method or one of its super classes.
   * If this attribute is specified, the data provider method
   * needs to be static on the specified class.
   */
  public Class<?> dataProviderClass() default Object.class;

  /**
   * If set to true, this test method will always be run even if it depends
   * on a method that failed.  This attribute will be ignored if this test
   * doesn't depend on any method or group.
   */
  public boolean alwaysRun() default false;

  /**
   * The description for this method.  The string used will appear in the
   * HTML report and also on standard output if verbose >= 2.
   */
  public String description() default "";

  /**
   * The list of exceptions that a test method is expected to throw.  If no
   * exception or a different than one on this list is thrown, this test will be
   * marked a failure.
   */
  public Class[] expectedExceptions() default {};

  /**
   * If expectedExceptions was specified, its message must match the regular expression
   * specified in this attribute.
   */
  public String expectedExceptionsMessageRegExp() default ".*";

  /**
   * The name of the suite this test class should be placed in.  This
   * attribute is ignore if @Test is not at the class level.
   */
  public String suiteName() default "";

  /**
   * The name of the test  this test class should be placed in.  This
   * attribute is ignore if @Test is not at the class level.
   */
  public String testName() default "";

  /**
   * @deprecated Use singleThreaded
   */
  public boolean sequential() default false;

  /**
   * If set to true, all the methods on this test class are guaranteed to run
   * in the same thread, even if the tests are currently being run with parallel="true".
   *
   * This attribute can only be used at the class level and will be ignored
   * if used at the method level.
   */
  public boolean singleThreaded() default false;

  /**
   * The name of the class that should be called to test if the test
   * should be retried.
   * @return String The name of the class that will test if a test method
   * should be retried.
   */
  public Class retryAnalyzer() default Class.class;

  /**
   * If true and invocationCount is specified with a value > 1,
   * then all invocations after a failure will be marked as a SKIP
   * instead of a FAIL.
   */
  public boolean skipFailedInvocations() default false;

  /**
   * If set to true, this test will run even if the methods
   * it depends on are missing or excluded.
   */
  public boolean ignoreMissingDependencies() default false;

  /**
   * The scheduling priority. Lower priorities will be scheduled first.
   */
  int priority() default 0;

}

 

3.TestNG参数化测试

        A.基于xml配置实现 需要@Parameters配合

        B.基于编码方式需要@Parameters配合

        C.基于Dataprovider数据提供者实现的。

        D.基于自定义数据提供者。

4.TestNG测试之间依赖

        A.测试分组,组间依赖   dependsOnGroups

        B.测试方法,方法名称之间的依赖   dependsOnMethods

5. TestNG @Factory测试工厂的设置

       主要设置针对测试单元的多次测试而言

6.TestNG并发测试和超时,异常的设置 threadPoolSize  singleThreaded         timeOut  expectedExceptions

 

7TestNG失败重新执行的策略

8TestNG和junit的整合

     A.junit3 采用反射实现调用和执行

    B.junit4采用JunitCore调用执行类。

9TestNG编码方式运行

       TestNG实现:

         

	TestNG tng = new TestNG();  
		tng.addListener( new MyMethodInterceptor());
		tng.setTestClasses(new Class[]{MyMethodInterceptorTest.class});
		tng.run();

 

 

Junit4实现:

  

	     JUnitCore.main(args);
		JUnitCore.runClasses(new class[]{Test.class,Test1.class});

 

10。TestNG通过注解Transformers 实现对运行时执行控制。

               主要实现IAnnotationTransformer 接口即可。

11.TestNg方法拦截器的可以修改执行的结果信息。

              主要实现IMethodInterceptor接口即可。

12 TestNG丰富的Listener监听器满足不同阶段的监听。

  IAnnotationTransformer 
  IAnnotationTransformer2 
  IHookable 
  IInvokedMethodListener 
  IMethodInterceptor 
  IReporter 
  ISuiteListener 
  ITestListener 

13.TestNG的依赖注入和不同框架的整合

    Spring,Guide等使用。

14.TestNG结果的监听和执行报告和日志的控制

 

 

 

   

分享到:
评论

相关推荐

    TestNG中文手册学习笔记

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

    testNG单元测试学习总结

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

    TestNG学习笔记

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

    Testng JAR包及教程

    总结来说,这个压缩包提供了TestNG在Eclipse中的使用教程,以及关于DWR和JSON的教程资源,可以帮助Java开发者提升测试和Web应用开发的技能。通过学习这些内容,你可以更好地理解和运用这些技术,提升工作效率。

    软件测试领域+TestNG框架+实践总结+学习参考资料

    这是一份详尽的TestNG从零实践总结,涵盖了TestNG的基本概念、核心特性、运行方式以及与JUnit4的深入对比。通过这份资料,你将全面掌握TestNG这一强大开源自动化测试框架的精髓。 使用人群:面向软件测试工程师、...

    testng-6.7.jar TestNG依赖包

    `testng-6.7-sources.jar`文件则包含了TestNG 6.7版本的源代码,这对于开发者来说非常有价值,因为可以直接查看源码理解内部工作原理,方便调试和学习。 总的来说,TestNG是一个强大且灵活的测试框架,对于Java开发...

    TestNG学习文档英文版.pdf版

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

    testng-xslt-1.1.2.zip

    TestNG XSLT 1.1.2 是一个专门针对TestNG测试框架的扩展,它提供了将TestNG的测试结果转换为易于阅读和分析的XSLT格式的能力。这个压缩包文件“testng-xslt-1.1.2.zip”包含了这个扩展的源代码、文档以及可能的库...

    TestNG-离线安装包

    TestNG-6.9离线安装包,下载zip解压后,直接拷贝到eclipse下的dropins目录下即可。重启eclipse,TestNG插件即安装成功。重启eclipse会自动安装TestNG插件,所以启动时间较长,请耐心等待。大概3-5min左右。

    TestNG学习中遇到的坑.txt

    2017年6月5日记:在学习直接用手工执行testng.xml时,得到以下教训: 1、如果写批处理调用,环境变量的末尾必须以分号结束,否则调试气死你也搞不定啥原因,控制台就一句话,找不到类;

    eclipse-testng离线包

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

    testng-6.9.4和testng-6.8.8.zip

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

    testng.zip离线安装

    TestNG是一款功能强大的Java测试框架,它扩展了JUnit的功能,为开发者提供了更多高级特性,如支持并发测试、灵活的测试配置、丰富的注解、详细的测试报告等。在没有网络连接或者网络环境不稳定的情况下,离线安装...

    TestNG-6.3 测试框架

    TestNG是一款功能强大的自动化测试框架,相较于JUnit,它提供了更多的特性和灵活性,...对于正在学习和使用TestNG的开发者来说,深入理解并熟练运用这些特性,无疑会提升他们的测试技能,为项目的质量保障贡献力量。

    TestNG安装包

    TestNG是一个Java的框架,所以第一个要求是JDK要安装在你的机器上。 系统要求 JDK 1.5或以上 内存 没有最低要求 磁盘空间 没有最低要求 操作系统 没有最低要求 步骤1 -验证Java安装在你的机器上 现在,打开...

    testng测试报告模板BeautifulReport.7z

    TestNG是一款功能强大的Java测试框架,它为开发者提供了灵活的注解、测试配置、执行模型以及丰富的报告选项。"testng测试报告模板BeautifulReport.7z"是一个包含资源的压缩包,专门用于自定义TestNG测试执行后的报告...

    TestNG教程.pdf

    TestNG(Testing New Generation)是一个开源的自动化测试框架,用于简化单元测试、集成测试、端到端测试等不同层次的测试需求。它受JUnit和NUnit的启发,并且引入了一些新功能,使得测试过程更加强大和方便。 在...

    eclipse-testng 离线包下载

    eclipse-testng 离线包 xmlns:math="http://exslt.org/math" xmlns:testng="http://testng.org"&gt; indent="yes" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" ...

    testng-6.10.jar

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

    TestNG教程

    验证TestNG设置是否成功,你可以编写一个简单的TestNG测试类并运行。一个基本的TestNG测试类包含使用注解标记的测试方法,例如: ```java import org.testng.Assert; import org.testng.annotations.Test; public ...

Global site tag (gtag.js) - Google Analytics