使用Junit5 进行自动化测试

  • 在UI自动化测试里面,我们的单元测试主要针对UI界面的功能进行自动化测试
  • 首先在我们的项目中引入junit5的依赖,如下:
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

1.注解(当前注解都用在方法上)

selenium编写测试用例的时候,需要在main方法里面实例化类,然后调用测试方法才能实现测试,但是加上注解就不用再实例化

1. @Test

  • 表示该方法是测试方法,执行当前这个类时,会自动执行该类下所有带@Test 注解的方法

  • 比如当前只执行aaa方法,不会执行dog方法

public class JunitTest {
    @Test
    public void aaa() {
        System.out.println("测试aaa");
    }
    public void dog() {
        System.out.println("测试dog");
    }
}

在这里插入图片描述

2. @BeforeEach

  • 使用该注解的方法需要在每个测试用例执行之前都执行一次
    在这里插入图片描述

3. @BeforeAll

  • 使用该注解的方法需要在当前类下所有用例之前执行一次,

  • 被该注解修饰的方法必须为静态方法

4. @AfterEach

  • 使用该注解的方法需要在每个用例执行之后都执行一次
public class JunitTest1 {
    @Test
    public void aaa() {
        System.out.println("测试aaa");
    }
    @Test
    public void dog() {
        System.out.println("测试dog");
    }
     @AfterEach
    public  void cat() {
        System.out.println("测试cat");
    }

}

在这里插入图片描述

5. @AfterAll

  • 使用该注解的方法在当前类下所有的用例执行之后执行一次,
  • 被该注解修饰的方法必须为静态方法
public class JunitTest2 {
    @Test
    public void aaa() {
        System.out.println("测试aaa");
    }
    @Test
    public void dog() {
        System.out.println("测试dog");
    }
    @AfterAll
    public static void FFF() {
        System.out.println("测试FFF");
    }
}

在这里插入图片描述

2.断言

1. 断言匹配/不匹配

  • assertEquals方法判断期望值和结果值是否相等,相等则测试用例通过,不相等则报错
  • assertNotEquals
public class assertTest {
    @Test
   public void test(){
        Assertions.assertEquals(1,2);
        Assertions.assertEquals(1,1);
    }
}

在这里插入图片描述

2. 断言结果为真/假

  • assertTrue
  • assertFalse

3. 断言结果为空/不空

  • assertNull
  • assertNotNull
public class assertTest {
    @Test
   public void test(){
        String str1 = null;
        String str2 = "hello";
        Assertions.assertNull(str1);
        Assertions.assertNull(str2);
        Assertions.assertNotNull(str2);
    }
}

在这里插入图片描述

在这里插入图片描述

3.测试用例的执行顺序

  • 官方没有明确的规定,基本使用A~Z的顺序,但是在测试登录页面的时候,必须先测试登录页面的显示,字体等,然后才能测试登录是否正常,否则测试登录页面跳转以后,登陆页面元素没法测试
  • 首先要使用注解 @TestMethodOrder(MethodOrderer.OrderAnnotation.class) (该注解必须要用在类上)说明当前类下所有的用例需要使用 Order 注解来进行排序,然后通过 Order注解来指定测试用例的执行顺序,该注解的参数便是执行顺序

在这里插入图片描述
在这里插入图片描述

4.参数化

  • 使用参数化注解之前需要先声明该方法为参数化@ParameterizedTest
  • 使用了参数化注解的方法不能再使用@Test注解
  • 通过注解提供数据来源

单参数的

  • 使用方式: @ValueSource(数据类型方法={参数1,参数2…})
public class SingleTest {
    @ParameterizedTest
    @ValueSource(strings = {"lucy", "marry", "鹿晗"})
    public void getString(String name) {
        System.out.println(name);
    }
    
    @ParameterizedTest
    @ValueSource(ints = {12,90,65})
    public void getString(int age) {
        System.out.println(age);
    }
}

在这里插入图片描述

多参数的

  • @CsvSource({“marry,20”,“lilei,50”,“Bob,90”})
  • 一个引号就是一组数据
public class MuchParamTest {
    @ParameterizedTest
    @CsvSource({"marry,20","lucy ,23","鹿晗,34"})
    public void muchTest(String name ,int age){
        System.out.println("name : " + name +  "   age: " + age);
    }
}

在这里插入图片描述

在这里插入图片描述

但是当我们的测试用例有几十上百的时候,再用这个方法来写测试用例就不合适了,那么就可以使用以下办法

  • @CsvFileSource(files = “D:\下载\新建 XLSX 工作表.csv”)
  • 注解的参数就是写测试用例的文件的绝对路径。在这里插入图片描述
    在这里插入图片描述
public class FileTest {
    @ParameterizedTest
    @CsvFileSource(files ="C:\\Users\\13475\\Desktop\\新建文本文档.csv" )
    public void test(String name,int age){
        System.out.println("name : " + name +  "   age: " + age);
    }
}

在这里插入图片描述

动态参数

  • @MethodSource
  • 注解就是提供数据源的方法名
    如果不指定方法名,会自动的找跟用例方法名同名的静态方法

5.测试套件

  • 想要一次运行多个测试类,使用测试套件

  • 先创建一个类,使用注解 @Suite 声明为测试套件类

  1. 指定类来运行用例 @SelectClasses({aaa.class,bbb.class}),想要运行的用例必须以@Test注解声明
  2. 指定包来运行用例 @SelectPackages(“com.auto0701”),指定包来运行时,该包下的测试类命名必须以Test/Tests结尾(T大写)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值