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 测试 ...
随机推荐
- 用自己赚的钱第一次坐飞机 那feel倍儿爽
马年春晚上,歌手大张伟的神曲<倍儿爽>如今已传遍大街小巷.其实,不管人家到底有没有炒作,能让我们这些观众感觉到放松.乐呵,那就是一个成功的春晚节目.而今年,我也如同这歌中唱的一样,活得倍儿 ...
- Excel应该这么玩——5、三种数据:Excel也是系统
Excel最常用的功能就是记录数据,把数据按照行列记录下来.这部分数据是源数据,是业务活动中最原始的流水账,作为后续操作的依据.为了从源数据中得出一定的结论,需要对源数据进行分析得出报表数据. ...
- jquery 通过ajax FormData 对象上传附件
之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div> 流程图: <input id=& ...
- EF并非我们想象的那么智能
我之前在项目中用EF读取一个视图的数据,页面展示出现重复数据,当时百思不得其解,跟踪代码,数据读取时取到的数据并不是重复,为什么在前台显示就有重复了呢,我当时就在业务层将数据去重,但取到的数据跟数据库 ...
- 今天开始Swift学习
今天开始Swift学习 在此记录笔记 以备之后查阅! allenhuang
- SOA和WCF&WebAPI
SOA http://www.cnblogs.com/leslies2/archive/2011/12/12/2272722.html WCF开发框架形成之旅--如何实现X509证书加密 WebAPI ...
- redis.conf配置详细翻译解析
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...
- webpack react基础配置二 热加载
用到 webpack-dev-server 先安装,注意 装到全局 还是本项目我也没注意 因为之前一直报错,有很小可能是安装到本地解决了,或者是我网络问题: 装到全局:$ npm install ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- 修改bootstrap modal模态框的宽度
原文链接:http://blog.csdn.net/wuhawang/article/details/52252912 修改模态框的宽度很简单,修改width属性就可以了 但是要注意的一点是,修改的不 ...