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的使用范围和分组
下面为源代码自己看不解释:
- 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);
- 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的更多相关文章
- Mockito @BeforeClass @BeforeMethod @BeforeTest 的生命周期
@BeforeClass---@AfterClass 类实例化前, 被执行, 主要用于设置环境变量等, 与SpringTestContext结合用的时候要注意, 这种情况下@autowire的bean ...
- testng生成自定义html报告
转自:https://blog.csdn.net/kdslkd/article/details/51198433 testng原生的或reportng的报告总有些不符合需要,尝试生成自定义测试报告,用 ...
- 测试报告 之 testNG + Velocity 编写自定义html测试报告
之前用testNG自带的test-outputemailable-report.html,做出的UI自动化测试报告,页面不太好看. 在网上找到一个新的报告编写,自己尝试了一下,埋了一些坑,修改了输出时 ...
- testng自定义html报告,根据freemaker生成
[转] https://testerhome.com/topics/3487 [参考]https://www.cnblogs.com/cheese320/p/8890929.html 做了些修改,换 ...
- APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...
- testng 教程
Testng 简介: Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation,主要有以下特性: annotations 注释,如 @test ...
- TestNG之注解的生命周期
有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 @BeforeSuite@AfterSuite@BeforeTest@AfterTest@BeforeGroups@AfterGro ...
- Testng使用方法示例
TestNG TestNG是一个测试框架,灵感来自JUnit和NUnit.但引入了下面这些新的功能,使它更强大和更容易使用. 注解: 可在任意大的线程池运行您的测试(所有方法在它们自己的线程内,一个线 ...
- TestNG学习-002-annotaton 注解概述及其执行顺序
此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...
随机推荐
- Qt之布局管理--基本布局
Qt提供的布局类以及他们之间的继承关系QLayout-----QGirdLayout | ---QBoxLayout----QHBoxLayout | --QVBoxLayout----------- ...
- HTML5&CSS3练习笔记(二)
HTML5&CSS3 练习CSS3伪选择器使用 1.first-line 格式:元素:first-line 说明:设置同一个标签下所有行内容的第一行的样式,例如: <table st ...
- 在活动中使用Menu
1.在res下创建menu普通文件夹,在menu下创建名为main的Menu资源文件 2.在menu组件下创建item组件:资源id,title标题名称 3.覆盖活动中的onCreateOptions ...
- js计算相隔天数日期
计算40天前的日期: var temp = new Date();console.log(temp);var tempValue = temp.getTime() - 40 * 24* 60*60*1 ...
- VS 与JIRA Bamboo的连接
atlassian-vs-connector 可以百度下地址 一些配置 效果:
- quick-cocos2d-x :加入学习
语法不熟悉, 接口不熟悉. 部分不理解. 超级初学者. 好好学习, 一直在学习 使用Quick-Cocos2d-x搭建一个横版过关游戏 推荐官方的文档和例子 demo
- .NET工程师技术进阶
通常,一个人对技术的掌握程度可以分为精通.熟练.熟悉.了解,详细解析如下: 精通:能够掌握此技术的85%技术要点以上,使用此技术时间超过两年,并使用此技术成功实施5个以上的项目.能使用此技术优化性能或 ...
- angularJS——模块
一.在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规技术(HTML,CSS,J ...
- 09B-独立按键消抖实验02——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的: 1.复习按键的设计 2.用模块化设计的方式实现每次按下按键0,4个LED显示状态以二进制加法格式加1,每次按下按键1,4个LED显示状态以二进制加法格式减 ...
- 自定义CollectionViewLayout
转自answer-huang的博客 原文出自:Custom Collection View Layouts UICollectionView在iOS6中第一次被介绍,也是UIKit视图类中的一颗 ...