# test-framework **Repository Path**: kkk001/test-framework ## Basic Information - **Project Name**: test-framework - **Description**: 自动化测试框架,集成cucumber、testng - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 5 - **Created**: 2017-08-07 - **Last Updated**: 2022-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # test-framework 自动化测试框架,集成cucumber、testng ## JUnit的缺点 * 最初的设计,使用于单元测试,现在只用于各种测试。 * 不能依赖测试 * 配置控制欠佳(安装/拆卸) * 侵入性(强制扩展类,并以某种方式命名方法) * 静态编程模型(不必要的重新编译) * 不适合管理复杂项目应用,JUnit复杂项目中测试非常棘手。 junit4 与 testng 的比较: ## testng简介 TestNG按照官方的定义: TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。 TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展。它的灵感来源于JUnit。它的目的是优于JUnit,尤其是在用于测试集成多类时。 ### TestNG的特点 * 注解 * TestNG使用Java和面向对象的功能 * 支持综合类测试(例如,默认情况下,不用创建一个新的测试每个测试方法的类的实例) * 独立的编译时测试代码和运行时配置/数据信息 * 灵活的运行时配置 * 主要介绍“测试组”。当编译测试,只要要求TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等 * 支持依赖测试方法,并行测试,负载测试,局部故障 * 灵活的插件API * 支持多线程测试 参考: [1] [2] ### TestNG支持的注解 |注解 | 描述| |-------------------------------------|----------------------------------| |@BeforeSuite |在该套件的所有测试都运行在注释的方法之前,仅运行一次。| |@AfterSuite |在该套件的所有测试都运行在注释方法之后,仅运行一次。| |@BeforeClass |在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。| |@AfterClass |在调用当前类的第一个测试方法之后运行,注释方法仅运行一次| |@BeforeTest |注释的方法将在属于标签内的类的所有测试方法运行之前运行。| |@AfterTest |注释的方法将在属于标签内的类的所有测试方法运行之后运行。| |@BeforeGroups |配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。| |@AfterGroups |此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。| |@BeforeMethod |注释方法将在每个测试方法之前运行。| |@AfterMethod |注释方法将在每个测试方法之后运行。| |@DataProvider |标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object \[\] \[\],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。| |@Factory |将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []。| |@Listeners |定义测试类上的侦听器。| |@Parameters |描述如何将参数传递给@Test方法。| |@Test |将类或方法标记为测试的一部分。| ## Cucumber简介 Cucumber 是一个能够理解用普通语言 描述的测试用例的行为驱动开发(BDD)的自动化测试工具,用Ruby编写,支持Java和·Net等多种开发语言。 Cucumber可以让人们用近似自然的语言去描述Feature和场景,根据Feature驱动开发。用作软件技术人员和非技术之间验收测试的桥梁。 它是一个命令行工具。运行后,会执行features中的内容。feature中的step会调用step definitions(Ruby代码),可以用标签来组织场景,支持40多种语言,高质量集成Ruby。