导航
我们为什么需要TestNG?
Java有好几个测试框架,JUnit是比较常见的一个,Spring系列默认的测试框架就是JUnit。TestNG也是Java的一个测试框架,与JUnit功能类似, 但支持更多的注解与功能。
我们常使用JUnit做单元测试,而在做自动化测试时,更偏向于选择TestNG。
TestNG搭建
Maven工程中,添加TestNG依赖包即可,可自行选择版本:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.1.0</version>
<scope>test</scope>
</dependency>
TestNG注解及功能
TestNG的注解与JUnit类似,但会更丰富,更细致:
注解 | 描述 |
---|---|
@Test | 标记一个类里所有的public void方法,或某个方法,作为测试案例。 |
@BeforeSuite | 对于套件测试,在此套件中的所有测试执行之前运行,仅运行一次。 |
@AfterSuite | 对于套件测试,在此套件中的所有测试执行之后运行,仅运行一次。 |
@BeforeClass | 在调用当前类之前运行,只运行一次。 |
@AfterClass | 在调用当前类之后运行,只运行一次。 |
@BeforeTest | 对于套件测试,在属于标签内的所有类的测试方法执行之前运行。 |
@AfterTest | 对于套件测试,在属于标签内的所有类的测试方法都已执行完之后运行。 |
@BeforeGroups | 在调用属于该组的第一个测试方法之前运行。 |
@AfterGroups | 在调用属于该组的最后一个测试方法执行之后运行 。 |
@BeforeMethod | 注解的方法将每个测试方法之前运行。 |
@AfterMethod | 在每个测试方法执行之前都会运行。 |
@DataProvider | 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。 |
@Factory | 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。 |
@Listeners | 定义一个测试类的监听器。 |
@Parameters | 用于将参数传递给@Test方法。 |
TestNG配置文件
对比JUnit,TestNG最显眼的区别就是多了一个配置文件。
有了这个配置文件的存在,可以更方便的管理测试案例的执行。
1.新增配置文件
在项目根目录下,新增testng.xml格式的配置文件,文件名任意,配置文件可以有多个。
maven工程在pom文件中,指定配置文件路径后,可以直接运行配置文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>./testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin