http://topmanopensource.iteye.com/blog/1983729

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的使用范围和分组

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

  1. package org.testng.annotations;
  2. import static java.lang.annotation.ElementType.CONSTRUCTOR;
  3. import static java.lang.annotation.ElementType.METHOD;
  4. import static java.lang.annotation.ElementType.TYPE;
  5. import java.lang.annotation.Retention;
  6. import java.lang.annotation.Target;
  7. /**
  8. * Mark a class or a method as part of the test.
  9. *
  10. * @author Cedric Beust, Apr 26, 2004
  11. */
  12. @Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
  13. @Target({METHOD, TYPE, CONSTRUCTOR})
  14. public @interface Test {
  15. /**
  16. * The list of groups this class/method belongs to.
  17. */
  18. public String[] groups() default {};
  19. /**
  20. * Whether methods on this class/method are enabled.
  21. */
  22. public boolean enabled() default true;
  23. /**
  24. * The list of variables used to fill the parameters of this method.
  25. * These variables must be defined in the property file.
  26. *
  27. * @deprecated Use @Parameters
  28. */
  29. @Deprecated
  30. public String[] parameters() default {};
  31. /**
  32. * The list of groups this method depends on.  Every method
  33. * member of one of these groups is guaranteed to have been
  34. * invoked before this method.  Furthermore, if any of these
  35. * methods was not a SUCCESS, this test method will not be
  36. * run and will be flagged as a SKIP.
  37. */
  38. public String[] dependsOnGroups() default {};
  39. /**
  40. * The list of methods this method depends on.  There is no guarantee
  41. * on the order on which the methods depended upon will be run, but you
  42. * are guaranteed that all these methods will be run before the test method
  43. * that contains this annotation is run.  Furthermore, if any of these
  44. * methods was not a SUCCESS, this test method will not be
  45. * run and will be flagged as a SKIP.
  46. *
  47. * If some of these methods have been overloaded, all the overloaded
  48. * versions will be run.
  49. */
  50. public String[] dependsOnMethods() default {};
  51. /**
  52. * The maximum number of milliseconds this test should take.
  53. * If it hasn't returned after this time, it will be marked as a FAIL.
  54. */
  55. public long timeOut() default 0;
  56. /**
  57. * The maximum number of milliseconds that the total number of invocations on this test
  58. * method should take.  This annotation will be ignored if the attribute invocationCount
  59. * is not specified on this method.
  60. * If it hasn't returned after this time, it will be marked as a FAIL.
  61. */
  62. public long invocationTimeOut() default 0;
  63. /**
  64. * The number of times this method should be invoked.
  65. */
  66. public int invocationCount() default 1;
  67. /**
  68. * The size of the thread pool for this method.  The method will be invoked
  69. * from multiple threads as specified by invocationCount.
  70. * Note:  this attribute is ignored if invocationCount is not specified
  71. */
  72. public int threadPoolSize() default 0;
  73. /**
  74. * The percentage of success expected from this method.
  75. */
  76. public int successPercentage() default 100;
  77. /**
  78. * The name of the data provider for this test method.
  79. * @see org.testng.annotations.DataProvider
  80. */
  81. public String dataProvider() default "";
  82. /**
  83. * The class where to look for the data provider.  If not
  84. * specified, the dataprovider will be looked on the class
  85. * of the current test method or one of its super classes.
  86. * If this attribute is specified, the data provider method
  87. * needs to be static on the specified class.
  88. */
  89. public Class<?> dataProviderClass() default Object.class;
  90. /**
  91. * If set to true, this test method will always be run even if it depends
  92. * on a method that failed.  This attribute will be ignored if this test
  93. * doesn't depend on any method or group.
  94. */
  95. public boolean alwaysRun() default false;
  96. /**
  97. * The description for this method.  The string used will appear in the
  98. * HTML report and also on standard output if verbose >= 2.
  99. */
  100. public String description() default "";
  101. /**
  102. * The list of exceptions that a test method is expected to throw.  If no
  103. * exception or a different than one on this list is thrown, this test will be
  104. * marked a failure.
  105. */
  106. public Class[] expectedExceptions() default {};
  107. /**
  108. * If expectedExceptions was specified, its message must match the regular expression
  109. * specified in this attribute.
  110. */
  111. public String expectedExceptionsMessageRegExp() default ".*";
  112. /**
  113. * The name of the suite this test class should be placed in.  This
  114. * attribute is ignore if @Test is not at the class level.
  115. */
  116. public String suiteName() default "";
  117. /**
  118. * The name of the test  this test class should be placed in.  This
  119. * attribute is ignore if @Test is not at the class level.
  120. */
  121. public String testName() default "";
  122. /**
  123. * @deprecated Use singleThreaded
  124. */
  125. public boolean sequential() default false;
  126. /**
  127. * If set to true, all the methods on this test class are guaranteed to run
  128. * in the same thread, even if the tests are currently being run with parallel="true".
  129. *
  130. * This attribute can only be used at the class level and will be ignored
  131. * if used at the method level.
  132. */
  133. public boolean singleThreaded() default false;
  134. /**
  135. * The name of the class that should be called to test if the test
  136. * should be retried.
  137. * @return String The name of the class that will test if a test method
  138. * should be retried.
  139. */
  140. public Class retryAnalyzer() default Class.class;
  141. /**
  142. * If true and invocationCount is specified with a value > 1,
  143. * then all invocations after a failure will be marked as a SKIP
  144. * instead of a FAIL.
  145. */
  146. public boolean skipFailedInvocations() default false;
  147. /**
  148. * If set to true, this test will run even if the methods
  149. * it depends on are missing or excluded.
  150. */
  151. public boolean ignoreMissingDependencies() default false;
  152. /**
  153. * The scheduling priority. Lower priorities will be scheduled first.
  154. */
  155. int priority() default 0;
  156. }

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实现:

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

Junit4实现:

  1. JUnitCore.main(args);
  2. tCore.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 BeforeClass BeforeMethod Test AfterClass AfterMethod的更多相关文章

  1. Mockito @BeforeClass @BeforeMethod @BeforeTest 的生命周期

    @BeforeClass---@AfterClass 类实例化前, 被执行, 主要用于设置环境变量等, 与SpringTestContext结合用的时候要注意, 这种情况下@autowire的bean ...

  2. testng生成自定义html报告

    转自:https://blog.csdn.net/kdslkd/article/details/51198433 testng原生的或reportng的报告总有些不符合需要,尝试生成自定义测试报告,用 ...

  3. 测试报告 之 testNG + Velocity 编写自定义html测试报告

    之前用testNG自带的test-outputemailable-report.html,做出的UI自动化测试报告,页面不太好看. 在网上找到一个新的报告编写,自己尝试了一下,埋了一些坑,修改了输出时 ...

  4. testng自定义html报告,根据freemaker生成

    [转] https://testerhome.com/topics/3487 [参考]https://www.cnblogs.com/cheese320/p/8890929.html  做了些修改,换 ...

  5. APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例

    前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...

  6. testng 教程

    Testng 简介: Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation,主要有以下特性: annotations  注释,如 @test ...

  7. TestNG之注解的生命周期

    有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 @BeforeSuite@AfterSuite@BeforeTest@AfterTest@BeforeGroups@AfterGro ...

  8. Testng使用方法示例

    TestNG TestNG是一个测试框架,灵感来自JUnit和NUnit.但引入了下面这些新的功能,使它更强大和更容易使用. 注解: 可在任意大的线程池运行您的测试(所有方法在它们自己的线程内,一个线 ...

  9. TestNG学习-002-annotaton 注解概述及其执行顺序

    此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...

随机推荐

  1. Qt之布局管理--基本布局

    Qt提供的布局类以及他们之间的继承关系QLayout-----QGirdLayout | ---QBoxLayout----QHBoxLayout | --QVBoxLayout----------- ...

  2. HTML5&CSS3练习笔记(二)

    HTML5&CSS3  练习CSS3伪选择器使用 1.first-line  格式:元素:first-line 说明:设置同一个标签下所有行内容的第一行的样式,例如: <table st ...

  3. 在活动中使用Menu

    1.在res下创建menu普通文件夹,在menu下创建名为main的Menu资源文件 2.在menu组件下创建item组件:资源id,title标题名称 3.覆盖活动中的onCreateOptions ...

  4. js计算相隔天数日期

    计算40天前的日期: var temp = new Date();console.log(temp);var tempValue = temp.getTime() - 40 * 24* 60*60*1 ...

  5. VS 与JIRA Bamboo的连接

    atlassian-vs-connector 可以百度下地址 一些配置     效果:        

  6. quick-cocos2d-x :加入学习

    语法不熟悉, 接口不熟悉. 部分不理解. 超级初学者. 好好学习, 一直在学习 使用Quick-Cocos2d-x搭建一个横版过关游戏 推荐官方的文档和例子  demo

  7. .NET工程师技术进阶

    通常,一个人对技术的掌握程度可以分为精通.熟练.熟悉.了解,详细解析如下: 精通:能够掌握此技术的85%技术要点以上,使用此技术时间超过两年,并使用此技术成功实施5个以上的项目.能使用此技术优化性能或 ...

  8. angularJS——模块

    一.在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规技术(HTML,CSS,J ...

  9. 09B-独立按键消抖实验02——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的: 1.复习按键的设计 2.用模块化设计的方式实现每次按下按键0,4个LED显示状态以二进制加法格式加1,每次按下按键1,4个LED显示状态以二进制加法格式减 ...

  10. 自定义CollectionViewLayout

    转自answer-huang的博客 原文出自:Custom Collection View Layouts    UICollectionView在iOS6中第一次被介绍,也是UIKit视图类中的一颗 ...