TestNG BeforeClass BeforeMethod Test AfterClass AfterMethod

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

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

Java代码  

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

Java代码  

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

Junit4实现:

Java代码  

  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结果的监听和执行报告和日志的控制

时间: 2024-10-03 23:53:57

TestNG BeforeClass BeforeMethod Test AfterClass AfterMethod的相关文章

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

@[email protected] 类实例化前, 被执行, 主要用于设置环境变量等, 与SpringTestContext结合用的时候要注意, 这种情况下@autowire的bean还未实例化 @[email protected] 整个测试类开始前, 被执行, 主要用户塞值, 或者进行mock(Object)的初始化, 此方法只会运行一次 @[email protected] 每个测试方法执行前, 进行调用, 和@BeforeTest的主要区别在于, 你如果需要每次清空你测试的一些上下文, 那

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

之前用testNG自带的test-outputemailable-report.html,做出的UI自动化测试报告,页面不太好看. 在网上找到一个新的报告编写,自己尝试了一下,埋了一些坑,修改了输出时间格式,最终出的结果比以前稍好. 简单介绍下Velocity 1.不用像jsp那样编译成servlet(.Class)文件,直接装载后就可以运行了,装载的过程在web.xml里面配置.[后缀名为.vhtml是我们自己的命名方式.也只有在这里配置了哪种类型的文件,那么这种类型的文件才能解析veloci

JUnit单元测试举例(@Test,@Before,@After,@beforeClass,@afterClass,assertEquals,assertTrue等)

需要测试的类Person: package cn.edu.lstc.junit; public class Person { public void run() { System.out.println("run..."); } public void eat() { System.out.println("eat..."); } public String a() { return "1"; } } @Test,@Before,@After p

testng多线程并行执行测试

并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以并行(多线程)的方式来执行测试.这就意味着基于TestNG测试组件的配置,多个线程可以被同时启动然后分别执行各自的测试方法.相对于传统的单线程执行测试的方式,这种多线程方式拥有很大的优势,主要是它可以减少测试运行时间,并且可以验证某段代码在多线程环境中运行的正确性. invocationCount----表示执行的次数 threadPoolSize-----表示

测试工作——TestNG

阅读目录 TestNG介绍 在Eclipse 中安装TestNG插件 TestNG最简单的测试 TestNG的基本注解 TestNG中如何执行测试 TestNG中按顺序执行Case TestNG异常测试 TestNG组测试 TestNG参数化测试 TestNG忽略测试 TestNG 依赖测试 TestNG测试报告 TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便 Java中已经有一个JUnit的测试框

TestNG环境搭建以及框架初识

TestNG的英文为Test Next Generation, 听上去好像下一代测试框架已经无法正常命名了的样子,哈哈,言归正传,啥是TestNG呢,它是一套测试框架,在原来的Junit框架的思想基础上开发的新一代测试框架,既然这么牛b,那果断弄来试试.本文主要从安装步骤-->第一个测试例子-->再多一点例子-->框架分析-->suite文件的书写-->总结结束. 安装步骤: 1. 第一步,当然首先是在你的java sdk, eclipse ide, system envir

TestNG基本注解(注释)【转】

统的方式来表示JUnit3中的测试方法是测试自己的名字前缀.标记一个类中的某些方法,具有特殊的意义,这是一个非常有效的方法,但命名不很好的扩展(如果我们想添加更多标签为不同的框架?),而非缺乏灵活性(如果我们要通过额外的参数测试框架). 注释被正式加入到JDK 5中的Java语言和TestNG作出选择使用注释注释测试类. 这里是TestNG的支持列表中的注解: 注解 描述 @BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中. @AfterSuite 注解的方法将只运行一次此

TestNG官方文档中文版(2)-annotation(转)

1. 介绍    TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有三个典型步骤: * 编写测试的 业务逻辑并在代码中插入TestNG annotation    * 将测试信息添加到testng.xml文件或者build.xml中    * 运行TestNG 在欢迎页面上可以找到快速入门示例. 下面是这篇文档使用的概念: * suite由xml文件描述.它包

Testng并发测试

并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以并行(多线程)的方式来执行测试.这就意味着基于TestNG测试组件的配置,多个线程可以被同时启动然后分别执行各自的测试方法.相对于传统的单线程执行测试的方式,这种多线程方式拥有很大的优势,主要是它可以减少测试运行时间,并且可以验证某段代码在多线程环境中运行的正确性. 目录 并行执行测试的优势 如何并行地执行测试方法 如何并行地执行测试类 如何并行地执行同一测试套