一起学习TestNg
官网:https://testng.org/doc/index.html
一、环境搭建
这里选择idea+maven 也是比较主流的
idea 和 maven 安装配置不在讲解
这里使用testng 此版本 其他版本可以去maven中央仓库找找
<!-- https://mvnrepository.com/artifact/org.testng/testng --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.14.3</version> <scope>test</scope> </dependency>
1.1 配置到pom.xml 文件下,然后拉到本地仓库
导入完成之后就可以使用了,testng 主要学习他里面一些注解 和 执行流程
TestNG的主要特点:注解
1. TestNG使用Java和面向对象的功能
2. 支持综合类测试(单元测试、集成测试)
3. 灵活的运行时配置(testng.xml)
4. 支持依赖测试方法,并行测试,负载测试,局部故障
5. 支持多线程测试
6. 支持数据驱动的测试
7. 可扩展
TestNG使用基本步骤
1. 编写测试代码
2. 编写配置文件,testng.xml
3. 运行测试程序
这是他的以下注解:
当我们使用一个 注解@Test 的时候 报红了 找不到 如下例:
这是什么原因那 ?
在pom.xml文件引用testng的时候,有个标签<scope>test</scope>限制了只能在test目录下使用
在POM 4中,<dependency>中引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
解决:所以只需要将上面pom.xml文件中的<scope>test</scope>去掉或者改成<scope>compile</scope>
二、注解基本使用
执行一个测试用例
@Tset :标记一个类或方法作为用例一部分
执行多个用例
注解:
@BeforeMethod:注解的方法 将在每一个测试方法之前执行
@AfterMethod :注解的方法 将在每一个测试方法之后执行
注解执行顺序:
TestNG中测试的级别
Suite:最上层的元素
Test:次一级的元素
Class:测试类
Method:测试类中的方法
import org.testng.annotations.*; public class BATest { @BeforeSuite public static void bfSuite(){ System.out.println("测试套件++++开始"); } @AfterSuite public static void afSuite(){ System.out.println("测试套件-----结束"); } @BeforeClass public static void bfCalss(){ System.out.println("测试这个类最先执行+++++"); } @AfterClass public static void afCalss(){ System.out.println("测试这个类最后执行------"); } @BeforeTest public static void bfTest(){ System.out.println("测试之前的一些准备"); } @AfterTest public static void afTest(){ System.out.println("测试完成后的一些结束"); } @BeforeMethod public static void bfMethood(){ System.out.println("将每执行一个测试方法前执行"); } @AfterMethod public static void afMethood(){ System.out.println("将每执行一个测试方法后执行"); } @Test public static void testCase01(){ System.out.println("测试用例一执行"); } @Test public static void testCase02(){ System.out.println("测试用例二执行"); } }