- idea中我们需要引入对应的testng插件,在File -> settings -> plugins中搜索testng,如果出现结果说明已经安装,否则去market中安装对应的插件
- 在依赖文件中引入TestNG 所需的依赖,基本可以使用 TestNG 所有配置。注意继承 AbstractTestNGSpringContextTests ,并使用 SpringBootTest 注解。
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.10</version>
<scope>test</scope>
</dependency>
3、创建我们测试需要基类,基类需要继承AbstractTestNGSpringContextTests,并且指定我们需要测试的bean的定义,在@SpringBootTest中,可以通过配置文件或者配置类的方式来指定bean范围,classes需要注入的类如果依赖比较简单较少,可以指定classes的具体类,如果比较多,可以直接指定springboot的启动类
4、如下图,选中想要生成单元测试的类名,alt+enter,选择create Test,根据提示选择想要生成的相关测试的方法,在对应的Test目录生成测试类。
5、TestNG的注解属性解释
注解 | 描述 |
@DataProvider | 为测试方法提供数据 |
@BeforeMethod | 在每个测试方法 前 执行 |
@AfterMethod | 在每个测试方法 后 执行 |
@BeforeClass | 添加注解的方法将在当前类的第一个测试方法调用前运行 |
@AfterClass | 添加注解的方法将在当前类的所有测试方法调用后运行 |
@BeforeGroups | 被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行 |
@BeforeTest | 添加注解的方法将在测试运行前运行 |
@AfterTest | 添加注解的方法将在测试运行后运行 |
@BeforeSuite | 添加注解的方法将在所有测试运行前运行 |
@AfterSuite | 添加注解的方法将在所有测试运行后运行 |
另外还有一些属性,
(1)alwaysRun:对于每个before方法(beforeSuite, beforeTest, beforeTestClass 和beforeTestMethod, 但是不包括 beforeGroups):如果设置为true,被配置的方法将总是运行而不管它属于哪个组。对于after方法(afterSuite, afterClass, ...): 如果设置为true,被配置的方法甚至在一个或多个先调用的方法失败或被忽略时也将运行。
(2)dependsOnGroups:这个方法依赖的组列表
(3)dependsOnMethod:这个方法依赖的方法列表
(4)enabled:这个类的方法是否激活
(5)groups:这个类或方法所属的分组列表
(6)inheritGroups:如果设置为true,这个方法被属于在类级别被@Test annotation指定的组例如:
1 @Test(enabled = false) //表示该测试用例不被执行
2 public Object runTest() {
3 xxxxxx
4 }
具体使用测试demo
@BeforeClass,@AfterClass,这两个注解修饰的方法只会执行一次
@BeforeMethod,@AfterMethod,会在每一个@Test方法前后都执行
testNG中有组的概念,可以在@Test中添加groups参数设定该方法是属于哪个组,还有一个priority属性可以设置当前方法在当前测试类中第几个执行(此时的顺序与组无关) @Test(priority = 9,groups = "aaa"),enable属性可以控制当前测试方法是否执行
@AfterGroups , @BeforeGroups这个两个注解是在指定的组前后执行,只会执行一次
@dataProvider注解可以为需要参数的测试方法提供参数,参数里面可以提供多组数据,做覆盖测试
testNG还可以通过xml文件来做定制化的详细测试,通过配置文件测试可以一次性测试多个类,定制需要测试的范围,测试的参数等