# ut-practices **Repository Path**: fastjrun/ut-practices ## Basic Information - **Project Name**: ut-practices - **Description**: 基于testng、h2、powermock的单元测试有效实践 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 2 - **Created**: 2019-01-01 - **Last Updated**: 2022-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ut-practices 基于testng、h2、powermock的单元测试有效实践 ### TestNG TestNG是一个Java语言的测试框架,由Cédric Beust受到JUnit和NUnit的启发而创建。TestNG的设计目标是,覆盖更广泛的测试类别范围:单元测试、功能测试、端到端测试、集成测试等,并且功能更强大、更易于使用。 #### TestNG的主要功能包括: 1. 支持注解。 2. 支持参数化和数据驱动测试 3. 灵活的执行模式。TestNG的运行,既可以通过maven的插件来执行,又可以通过带有可视化效果的IDE插件(最新的idea有现成的插件支持,eclipse的插件需要单独安装)执行。 4. 并发测试:测试运行在任意大的线程池中,并有多种策略可选(所有方法都有他们自己的线程,或每个测试类一个线程,等等);测试代码是否线程安全。 5. 测试报告:TestNG可以生成HTML和XML格式的测试报告。 #### TestNG的基本注解 |注解 |描述| | ------ | ------ | |@BeforeSuite |注解的方法将只运行一次,运行所有测试前此套件中。| |@AfterSuite |注解的方法将只运行一次此套件中的所有测试都运行之后。| |@BeforeClass |注解的方法将只运行一次先行先试在当前类中的方法调用。| |@AfterClass |注解的方法将只运行一次后已经运行在当前类中的所有测试方法。| |@BeforeTest |注解的方法将被运行之前的任何测试方法属于内部类的 标签的运行。| |@AfterTest |注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行。| |@BeforeGroups |组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。| |@AfterGroups |组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。| |@BeforeMethod |注解的方法将每个测试方法之前运行。| |@AfterMethod |被注释的方法将被运行后,每个测试方法。| |@DataProvider |标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。| |@Factory |作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。| |@Listeners |定义一个测试类的监听器。| |@Parameters |介绍如何将参数传递给@Test方法。| |@Test |标记一个类或方法作为测试的一部分。| ### h2 H2数据库是一个开源的嵌入型内存数据库,采用纯Java语言实现,和mysql数据库基本兼容,利用它可以很好解决单元测试实践过程强依赖mysql的问题。 ### powermock mock是模拟对象,用于模拟真实对象的行为。 Powermock主要用于打桩。比如:方法A的参数需要传入实例B,方法A需要调用B的某个方法B.C()。方法C因为耗时长或者根本没有实现或者其他不方便在单元测试中实现等原因,需要伪造返回,此时Powermock即可派上用场。 PowerMock扩展了EasyMock和Mockito框架,增加了对static和final方法mock支持等功能。 ### 安装教程 #### 使用说明 ``` git clone https://gitee.com/fastjrun/ut-practices.git cd ut-practices mvn clean verify ```