• 软件测试(六)自动化测试 Junit5


    Junit5

    • selenium是自动化测试框架(写自动化测试用例)
    • Junit单元测试框架(管理写好的测试用例)

    注解:@Test,@Disable ,@BeforeAll,@AfterAll,@BeforeEach,@AfteEach

    @Test注解

    表示当前的方法是一个测试用例。

    public class test1 {
        @Test
        void  test1(){
            WebDriver webDriver=new ChromeDriver();
            webDriver.get("https://www.baidu.com");
            webDriver.findElement(By.cssSelector("#su")).click();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    @Disabled

    暂不执行被标注的方法

    @BeforeAll 和 @AfterAll

        @BeforeAll
        static  void SetUp(){
            //这里放初始化
            System.out.println("先执行beforeAll");
        }
        @AfterAll
        static  void TearDown(){
            //这里放关闭资源
            System.out.println("先执行后执行AfterAll");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    @BeforeEach和@AfteEach

    BeforeAll:在所有的测试用例运行之前跑对应的方法
    AfterAll:在所有的测试用例运行完之后,跑对应的方法
    BeforeEach:每个用例之前运行
    AfteEach:每个用例执行完后运行

    参数化

    导入依赖:中央仓库

    
    <dependency>
        <groupId>org.junit.jupitergroupId>
        <artifactId>junit-jupiter-paramsartifactId>
        <version>5.9.2version>
        <scope>testscope>
    dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    @ParameterizedTest和 @ValueSource(ints = {1,2,3})(单参数)

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

    @ParameterizedTest和@CsvFileSource(resources = “test01.csv”)(csv获取参数(传递同种类型))

    文件名必须.csv

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

    @ParameterizedTest和@MethodSource(“Generator”)(多参数)

    Generator是方法

    @CsvSource可以填入多个参数,参数中也可传入空值

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

    控制测试用例执行顺序

    @TestMethodOrder(MethodOrderer.OrderAnnotation.class) 设定顺序执行

    @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    public class test2 {
        @Order(1)
        @Test
        void A(){
            System.out.println("A");`在这里插入代码片`
        }
        @Order(3)
        @Test
        void B(){
    		System.out.println("B");
        }
        @Order(2)
        @Test
        void C(){
    		System.out.println("C");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    @TestMethodOrder(MethodOrderer.Random.class) 随机执行

    @TestMethodOrder(MethodOrderer.Random.class)
    public class test2 {
        @Order(1)
        @Test
        void A(){
    
        }
        @Order(3)
        @Test
        void B(){
    
        }
        @Order(2)
        @Test
        void C(){
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    断言,Assertions

    断言相等, Assertions.assertEquals

     	@ParameterizedTest
        @ValueSource(ints = {1})
        void Test01(int num){
            Assertions.assertEquals(1,num);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    断言不相等,Assertions.assertNotEquals

    	@ParameterizedTest
        @ValueSource(ints = {1})
        void Test01(int num){
            Assertions.assertNotEquals(1,num);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    断言为空,Assertions.assertNull();

        @Test
        void Test02(){
            String str=null;
            Assertions.assertNull(str);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    断言不为空, Assertions.assertNotNull()

       @Test
        void Test02(){
            String str=null;
            Assertions.assertNotNull(str);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    suite 套件

    导入依赖

    <dependency>
                <groupId>org.junit.platformgroupId>
                <artifactId>junit-platform-suiteartifactId>
                <version>1.9.1version>
    
            dependency>
            
            <dependency>
                <groupId>org.junit.jupitergroupId>
                <artifactId>junit-jupiter-engineartifactId>
                <version>5.9.1version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    将测试类加入套件中

    @Suite
    @SelectClasses({test1.class,test2.class})
    public class RunSutite {
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    通过调用包中测试

    @Suite
    @SelectPackages(value = {"test01","test"})
    public class RunSutite {
            
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    谷粒商城笔记
    第八章 字符输入输出和输入验证
    网络规模与性能优化的一篇随笔
    Visual Studio Code的下载和安装
    网络基础详解
    再见 Xshell 这款开源的终端工具逼格更高
    扫一扫,原来这么简单
    【ADB】蓝牙总结
    vue生命周期
    前端开发环境搭建 (version 2)
  • 原文地址:https://blog.csdn.net/Cheer_RIO/article/details/133976031