最近一直在学习关于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 的软件专业人员,要求读者具备基本的 Java 编程知识、文本编辑器的使用经验以及对软件开发和测试流程的理解。TestNG 相较于 JUnit,克服了如下的局限性: 1. 初始设计仅针对单元...
### TestNG单元测试学习总结 #### 一、TestNG框架简介 **1.1 概念** TestNG(Test Next Generation)是一个高级测试框架,它继承了JUnit与NUnit的优点,并在此基础上添加了许多新的功能。TestNG是一个开源的、...
### TestNG 学习笔记概览 #### 一、JUnit 的局限性与 TestNG 的优势 ##### JUnit 缺陷概述 - **最初的用途限制**:JUnit 最初被设计为一个仅适用于单元测试的框架,但随着时间的发展,其功能已扩展至支持多种类型...
总结来说,这个压缩包提供了TestNG在Eclipse中的使用教程,以及关于DWR和JSON的教程资源,可以帮助Java开发者提升测试和Web应用开发的技能。通过学习这些内容,你可以更好地理解和运用这些技术,提升工作效率。
这是一份详尽的TestNG从零实践总结,涵盖了TestNG的基本概念、核心特性、运行方式以及与JUnit4的深入对比。通过这份资料,你将全面掌握TestNG这一强大开源自动化测试框架的精髓。 使用人群:面向软件测试工程师、...
`testng-6.7-sources.jar`文件则包含了TestNG 6.7版本的源代码,这对于开发者来说非常有价值,因为可以直接查看源码理解内部工作原理,方便调试和学习。 总的来说,TestNG是一个强大且灵活的测试框架,对于Java开发...
这个教程旨在为软件专业人员提供对TestNG框架的深入理解,帮助他们以简单易懂的方式学习TestNG,并将其应用到企业级应用的测试中,确保软件的稳定性和可靠性。 本教程面向对学习TestNG框架感兴趣的软件专业人员,...
TestNG XSLT 1.1.2 是一个专门针对TestNG测试框架的扩展,它提供了将TestNG的测试结果转换为易于阅读和分析的XSLT格式的能力。这个压缩包文件“testng-xslt-1.1.2.zip”包含了这个扩展的源代码、文档以及可能的库...
TestNG-6.9离线安装包,下载zip解压后,直接拷贝到eclipse下的dropins目录下即可。重启eclipse,TestNG插件即安装成功。重启eclipse会自动安装TestNG插件,所以启动时间较长,请耐心等待。大概3-5min左右。
2017年6月5日记:在学习直接用手工执行testng.xml时,得到以下教训: 1、如果写批处理调用,环境变量的末尾必须以分号结束,否则调试气死你也搞不定啥原因,控制台就一句话,找不到类;
TestNG是Java编程环境中一个强大的测试框架,与JUnit相比,它提供了更丰富的功能,如支持多种测试类型、灵活的测试配置、并发测试等。Eclipse是广受欢迎的Java集成开发环境(IDE),它允许开发者通过插件来扩展其...
TestNG是Java编程语言中的一款强大的自动化测试框架,与JUnit和Selenium等工具配合使用,为软件测试提供了全面且灵活的解决方案。TestNG由Cédric Beust创建,旨在提高测试效率并支持更复杂的测试场景,如并发测试、...
TestNG是一款功能强大的Java测试框架,它扩展了JUnit的功能,为开发者提供了更多高级特性,如支持并发测试、灵活的测试配置、丰富的注解、详细的测试报告等。在没有网络连接或者网络环境不稳定的情况下,离线安装...
TestNG是一款功能强大的自动化测试框架,相较于JUnit,它提供了更多的特性和灵活性,...对于正在学习和使用TestNG的开发者来说,深入理解并熟练运用这些特性,无疑会提升他们的测试技能,为项目的质量保障贡献力量。
TestNG是一个Java的框架,所以第一个要求是JDK要安装在你的机器上。 系统要求 JDK 1.5或以上 内存 没有最低要求 磁盘空间 没有最低要求 操作系统 没有最低要求 步骤1 -验证Java安装在你的机器上 现在,打开...
TestNG是一款功能强大的Java测试框架,它为开发者提供了灵活的注解、测试配置、执行模型以及丰富的报告选项。"testng测试报告模板BeautifulReport.7z"是一个包含资源的压缩包,专门用于自定义TestNG测试执行后的报告...
TestNG(Testing New Generation)是一个开源的自动化测试框架,用于简化单元测试、集成测试、端到端测试等不同层次的测试需求。它受JUnit和NUnit的启发,并且引入了一些新功能,使得测试过程更加强大和方便。 在...
eclipse-testng 离线包 xmlns:math="http://exslt.org/math" xmlns:testng="http://testng.org"> indent="yes" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" ...
TestNG是Java编程语言中的一款强大且功能丰富的自动化测试框架,尤其在进行单元测试和集成测试时表现出色。"testng-6.10.jar"是TestNG的特定版本,即6.10版本的库文件,以Java Archive (JAR)格式封装,方便开发者在...
验证TestNG设置是否成功,你可以编写一个简单的TestNG测试类并运行。一个基本的TestNG测试类包含使用注解标记的测试方法,例如: ```java import org.testng.Assert; import org.testng.annotations.Test; public ...