IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> JUnit5单元测试框架简单使用 -> 正文阅读

[开发测试]JUnit5单元测试框架简单使用

目录

Junit5的依赖

1,注解

1),@Test

?2),Before

3),After

2,断言

3,用例执行顺序(没有确切得执行顺序,自己定义执行顺序)

@Order:方法排序

4,参数化:当测试方法要使用多个参数,或者是由多个测试用例,可以通过参数化,从文件或者从方法,或者从数组中获取测试用例。

单参数:

多参数:

多参数文件读入:

?多参数本地文件输入

动态单参数:

动态多参数:

5,测试套件:通过在一个类上定义套件注解,将多个测试类得测试方法一次性全部执行


Junit:开源的java单元测试框架

Junit官方文档:Junit.org

Junit5的依赖

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
   <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>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-reporting</artifactId>
      <version>1.8.2</version>
      <scope>test</scope>
    </dependency>
private ChromeDriver driver = new ChromeDriver();

1,注解

1),@Test

    @Test
    public void zhujieTest(){
        driver.get("http://www.baidu.com");
        driver.findElement(By.cssSelector("#kw")).sendKeys("123");
        driver.quit();
    }

?2),Before

@BeforeEach:在每个方法执行前都要执行一遍

@BeforeAll:所有方法执行前只需要执行一遍

使用BeforeAll的方法必须是静态的。

3),After

@AfterEach:所有方法执行后都需要执行一遍

@AfterAll:所有方法执行结束最后在执行一次

2,断言

预言测试用例的测试结果

        @Test
        driver.get("http://www.baidu.com");
        String value = driver.findElement(By.cssSelector("#su")).getAttribute("value");
        Assertions.assertEquals("百度一下",value);//断言结果为百度一下
        Assertions.assertTrue("百度一下".equals(value));//断言结果为百度一下
        Assertions.assertFasle("百度一下".equals(value));//断言结果为百度一下
        Assertions.assertNull(value);//断言结果为null
        Assertions.assertNotNull(value);//断言结果不为空

3,用例执行顺序(没有确切得执行顺序,自己定义执行顺序)

@Order:方法排序

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)//按照自定义顺序排序
public class OrderTest {
    @Test
    @Order(3)
    public void fdsa(){
        System.out.println(1);
    }
    @Test
    @Order(1)
    public void sdfs(){
        System.out.println(2);
    }
    @Test
    @Order(4)
    public void fa(){
        System.out.println(3);
    }
    @Test
    @Order(2)
    public void gdsg(){
        System.out.println(4);
    }
}

多个测试用例之间需要排序,在测试中多个测试用例之间可能存在关联关系,不定义执行顺序会导致执行的顺序发生变化,出现错误。

4,参数化:当测试方法要使用多个参数,或者是由多个测试用例,可以通过参数化,从文件或者从方法,或者从数组中获取测试用例。

单参数:

    @ParameterizedTest//参数化注解,需要添加参数来源
    @ValueSource(strings = {"fds","yy","pp"})//参数来
    public void paratest(String name){
        System.out.println(name);
    }

多参数:

    @ParameterizedTest
    @CsvSource(value = {"name1,10","name2,12","name,23"})//多参数
    public void test(String name,int age){
        System.out.println(name+":"+age);
    }

多参数文件读入:

     @ParameterizedTest
    @CsvFileSource(resources = {"/my.csv"})
    public void fromFile(String name,int age){
        System.out.println(name+":"+age);
    }

?多参数本地文件输入

    @ParameterizedTest
    @CsvFileSource(files = {"文件路径+文件名"})
    public void fromFileLocal(String name,int age){
        System.out.println(name+":"+age);
    }

动态单参数:

//动态参数
    @ParameterizedTest
    @MethodSource("method")
    public void formMethod(String s){
        System.out.println(s);
    }
    //定义提供数据流的方法
    public static Stream<String> method(){
        return Stream.of("张三","李四","王五");
    }
//动态参数
    @ParameterizedTest
    @MethodSource//不指定数据来源,默认找同名的静态方法
    public void method(String s){
        System.out.println(s);
    }
    //定义提供数据流的方法
    public static Stream<String> method(){
        return Stream.of("张三","李四","王五");
    }

动态多参数:

 //多参数动态参数
    @ParameterizedTest
    @MethodSource
    public void fromMethodMulti(String name,int age){
        System.out.println(name + ":" + age);
    }
    static Stream<Arguments> fromMethodMulti(){
        return Stream.of(Arguments.arguments("lili",19),Arguments.arguments("lele",20));
    }

5,测试套件:通过在一个类上定义套件注解,将多个测试类得测试方法一次性全部执行

@org.junit.platform.suite.api.Suite
@SelectClasses({autoTest.class,OrderTest.class})//按照类测试
@org.junit.platform.suite.api.Suite
@SelectPackages("com.Junit")//按照包名调用
//通过测试套件,将所有的测试类,一次启动执行全部类的测试方法
@org.junit.platform.suite.api.Suite
@SelectClasses({autoTest.class,OrderTest.class})
public class Suite {
}

套件下的所有测试方法,都需要有@Test注解

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:58:10  更:2022-09-21 00:58:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 11:43:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码