• JUnit5 【最实用最简洁】


    JUnit5


    安装依赖:在Maven库中安装
    image.png

    为什么学了 Selenium 还要学 JUnit?
    1、JUnit5 是单元测试框架,拿着一个技术写自动化测试用例(Selenium3)
    2、Selenium 是自动化测试框架,拿着一个技术管理已经编写好的测试用例(JUnit5)

    一、JUnit 的相关技术

    JUnit 是针对 java 的一个单元测试框架。
    主要核心学习的“注解”:

    1. @ Test:表示当前的这个方法是一个测试用例
    2. @ Disabled :把测试用例进行忽略
    3. @ BeforeAll,@ AfterAll:最开始执行,和最后执行;在所有测试用例运行之前跑对应的方法,在所有测试用例之后跑对应的方法(类似于打开浏览器,关闭浏览器)
    4. @ BeforeEach,@ AfterEach:在每一个测试用例之前跑对应的方法,在每一个测试用例之后跑对应的方法

    @Test 注解这里的方法需要注意的是需要用 public,如果写出其他会报错

    public class JunitTest {
        @Test
        public void Test01() {
            System.out.println("这是一个测试用例");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    @ Disabled
    image.png

    其他注解类似,不再赘述

    注意:在这些注释中需要导入的是同一个包,如果导入的包不正确也会报错,这是容易出错的地方,而且出来问题,程序也是不会提示错误的。
    90fdcbdd48f3614e906b7ceb65f77cd.png

    二、参数化

    首先导入依赖:
    image.png

    参数化分为:
    1、单独参数

    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void Test04(int num) {
    System.out.println(num);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、CSV获取参数(需要创建csv文件在 Resource 目录下)

    @ParameterizedTest
        @CsvFileSource(resources = "test01.csv")
        void Test05(String name) {
            System.out.println(name);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、方法获取参数

    	@ParameterizedTest
        @MethodSource("Generator")
        void Test07(int num, String name) {
            System.out.println(num + ":" + name);
        }
    
        public static Stream<Arguments> Generator() {
            return Stream.of(Arguments.arguments(
                    1, "张三",
                    2, "李四"
            ));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4、多参数
    这里面 @CsvSource 里面的参数是不确定什么类型的,只有下面方法传参的时候才能确定类型

    	@ParameterizedTest
        @CsvSource({"1,2,3,''"}) // 需要在方法里面传递类型参数,才能确定死什么类型
        void Test08(String x,int y,String z,String q) {
            System.out.println(x);
            System.out.println(y);
            System.out.println(z);
            System.out.println(q);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意:传 空 字符串的时候,只能用 String 类型。

    再次强调,里面的依赖需要导入正确,如果发现语法都没有问题报错,就可以是依赖导入的不对,可以检查一下依赖是否导入正确

    三、给测试用例指定顺序

    这里需要用的的注解是 @TestMethodOrder(MethodOrderer.OrderAnnotation.class) ,然后再 @Test 方法加上 @Order(执行顺序)

    @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    public class JunitTest02 {
        @Order(3)
        @Test
        public void A() {
            System.out.println("这是测试用例A");
        }
        @Order(1)
        @Test
        public void B() {
            System.out.println("这是测试用例B");
        }
        @Order(2)
        @Test
        public void C() {
            System.out.println("这是测试用例C");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    image.png

    另外还有个注解 @TestMethodOrder(MethodOrderer.Random.class) 这是随机注解,随机指定顺序的,与@Order()里面参数指定的顺序没有任何关系。

    四、断言

    • 断言相等
    • 断言不相等
    • 断言为空
    • 断言不为空
    // 断言不相等
    Assertions.assertNotEquals(1,num);
    
    //断言相等
    Assertions.assertEquals(1,num); // (预期结果,实际结果)
    
    // 断言为null
    String str = null;
    Assertions.assertNull(str);
    
    // 断言不为null
    String str = "null1";
    Assertions.assertNull(str);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    其他方法也是类似,利用 Assertions类找到对应的方法。

    五、测试套件

    核心注解:
    1、 @Suite (使用套件必须加这个);
    2、@SelectClasses();
    3、@SelectPackages()

    //@SelectClasses({JunitTest.class,JunitTest03.class,JunitTest02.class}) // 通过class测试用例运行
    @Suite
    @SelectPackages({"JunitPackage02","JunitPackage01"}) // 通过包选择
    public class RunSuite {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用方法 @Suite && @Select…

    注意:指定包添加套件的前提
    1、所有类文件的命名都要以 Test、Tests 结尾;
    2、所有的测试单元都要使用 @Test 注解

    image.png
    提醒:特别注意依赖的导入,肯能出现报错的地方是因为导入的依赖不对

  • 相关阅读:
    电脑软件:推荐一款非常强大的pdf阅读编辑软件
    [贪心算法]java解决背包问题
    攻防世界WEB练习-inget
    Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门
    电脑桌面日历云便签怎么通过日历查看节假日和农历节气?
    vue目录树的封装
    法国A+ 法国VOC标签最高环保级别
    Mysql连接与存储
    Linux c编程之TCP通信
    山东碱地3000亩水稻 国稻种芯·中国水稻节:德州大河粮仓
  • 原文地址:https://blog.csdn.net/qq_54219272/article/details/133828453