【自动化测试】----Java的单元测试工具Junit5

目录

  1. 支持Java的最低版本为8
  2. 在pom.xml添加依赖
  3. Junit提供的注解功能
  4.  断言 Assertion类提供的一些方法
  5. 测试用例执行顺序 (为了预防测试用例执行顺序错误)
  6. 参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例用一组参数来模拟用户登陆)
  7. 测试套件 (适用于跑测试类里面所有的测试用例)

  • 此测试工具支持Java的最低版本为8

  • 在pom.xml添加依赖

 <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
  • Junit提供的注解功能

  1. @Test(表示方法是测试方法,可以自己去执行不需要调用,执行这个当前类时,会自动执行该类下所有带@Test注解的用例)
import org.junit.jupiter.api.Test;
public class Test1 {
    @Test
     void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印  aaa   bbb   ccc
  1. @BeforeEach(当前方法需要在每一个用例执行前执行一次)
public class Test1 {
    @BeforeEach
     void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}

打印  aaa  bbb  aaa  ccc
  1. @BeforeAll(需要静态方法,当前方法需要在所有用例执行前执行一次)
public class Test1 {
    @BeforeAll
    @Test
     static void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印: aaa  bbb  ccc
  1. @AfterEach(前方法需要在每一个用例执行后执行一次)
public class Test1 {
    @Test
     static void test1(){
         System.out.println("aaa");
    }
    @AfterEach
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印:ccc   bbb
  1. @AfterAll(需要静态方法,当前方法需要在当前类下所有用例之前执行一次)
public class Test1 {
    @AfterAll
    @Test
     static void test1(){
         System.out.println("aaa");
    }
    @Test
    void test2(){
        System.out.println("bbb");
    }
    @Test
    void test3(){
        System.out.println("ccc");
    }
}
打印:bbb  ccc  aaa
  •  断言 Assertion类提供的一些方法

  • assertEquals---匹配
 void dili1(){
        //启动驱动
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        ChromeDriver driver=new ChromeDriver(options);
        //输入网址
        driver.get("http://baidu.com");
        //打印百度一下
        String ret=driver.findElement(By.cssSelector("#su")).getAttribute("value");
        //打印文本
        System.out.println(ret);
        //断言一下
        Assertions.assertEquals("百度两下",ret);
        //退出程序
        driver.quit();
    }
、、此时程序会报错,与我们断言的不一致
  • assertNotEquals---不匹配
 Assertions.assertNotEquals("百度两下",ret);
  • assertTrue---结果为真
  • assertFalse---结果为假
 Assertions.assertTrue(1==0);
  • assertNull---结果为空
  • assertNotNull---结果不为空
 Assertions.assertNull("","你好");
  • 测试用例执行顺序 (为了预防测试用例执行顺序错误)

注意:order只代表用例的执行顺序,Test注解不可以删除 ,否则程序不能执行

//写在类前面,代表当前类所有方法通过order注解来排序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Test2 {
    //用例的执行顺序
    @Order(2)
    @Test
    void logintest(){
        System.out.println("logintest");
    }
    @Order(1)
    @Test
    void indextest(){
        System.out.println("indextest");
    }
    @Order(3)
    @Test
    void edittest(){
        System.out.println("edittest");
    }
}
  • 参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例用一组参数来模拟用户登陆)

  • 一般使用参数化注解就不能用@Test注解了
  • 单参数,首先要声明方法为参数化方法@ParameterizedTest

  

    @ParameterizedTest
    @ValueSource(strings = {"luncy,maty"})
    void single(String name){
        System.out.println(name);
    }
  • 多参数
@ParameterizedTest
    @CsvSource({"lili,123434","xiaohau,22334","12233,xiaojia"})
    void many(String name,String age){
        System.out.println("name: "+name+"age: "+age);
    }
  • 文件上传参数(从外部csv去读取)

  • 动态参数方法来提供数据源

  • 测试套件 (适用于跑测试类里面所有的测试用例)

  • 先用@Suite来标注是测试套件

  • 用@SelectClasses来指定要跑哪个测试类(注意这个测试类里面的方法都要加上@Test注解)

  • 选择包名来执行对应的测试用例,(该包下的所有测试类命名必须以Test/Tests结尾)

  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值