使用Junit框架,提高自动化测试效率

目录

1、Junit 是什么?

2、Junit 的用法

2.1、注解【@Test、@BeforeEach、@BeforeAll、@AfterEach、@AfterAll】

2.2、断言Assertion类

2.2.1、断言匹配/不匹配

2.2.2、断言结果为真/为假

2.2.3、断言结果为空/不为空

2.3、用例的执行顺序【order注解】

2.4、参数化

2.4.1、单参数:

 2.4.2、多参数

2.4.3、动态参数 

2.5、测试套件

2.5.1、指定类运行用例

2.5.2、指定包名来运行包下所有的用例

3、单元测试的优点


1、Junit 是什么?

        JUnit是一个Java语言的单元测试框架。

咱们在自动化测试中,只是浅浅借用了一下junit库中提供的一些方法


2、Junit 的用法

使用Junit,就需要导入依赖:

        <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>


2.1、注解【@Test、@BeforeEach、@BeforeAll、@AfterEach、@AfterAll】

@Test注解:标示方法为测试方法

代码:

package com;

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:龙宝
 * Date:2023-02-15
 * Time:18:22
 */
public class AutoTest {

    ChromeDriver driver = new ChromeDriver();
    @Test
    void test() throws InterruptedException {
        driver.get("https://www.baidu.com");
        driver.findElement(By.cssSelector("#kw")).sendKeys("aiurgag");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#su")).click();

    }
}

当使用了@Test注解,即使我们没有main函数,也可以启动测试:

703d7e63389140fbb64585d925ef0f88.png

 @BeforeEach:使用该注解的方法,在其他每一个用例执行之前,都会执行一次

ae9b15978d2843708793c3a83805356b.png

 @BeforeAll:使用该注解的方法,在其他用例之前只执行一遍:

 ec0fa7e5c05c482981f85029f02c09ee.png

 @AfterEach:使用该注解的方法,在其他每一个用例执行之后,都会执行一次

1cf4fd3ce24f42fe9a78ce9629f61615.png

  @AfterAll:使用该注解的方法,在其他用例之后只执行一遍:

328b2d5e1337443082ac6b32e6a1cff6.png


2.2、断言Assertion类

2.2.1、断言匹配/不匹配

 Assertions.assertEquals("百度1下",text);
 Assertions.assertNotEquals("bai",text);

d3889a8107e04dc6a069219fa648263e.png

2.2.2、断言结果为真/为假

一个为假,报错后,后面的就不会执行了

c5808a1c59ac4899a61ef5c9afe19b42.png

2.2.3、断言结果为空/不为空

        String s = null;
        Assertions.assertNull(s);
        Assertions.assertNotNull("afawa");

773f17595146496abfe2a0c66f0b1ec1.png


2.3、用例的执行顺序【order注解】

代码的顺序不一定是代码的执行顺序:

6d93a12cbd114268babf37cb5c2e6b38.png

 通过order注解来排序

7f7b5daf2e1a4aa9a534476a4800b187.png


2.4、参数化

尽可能的通过一个用例,多组参数来模拟用户的行为

@ParameterizedTest:声明该方法为参数方法

2.4.1、单参数:

@ValueSource:参数来源

56696fce09fe4271a733f9a0f1e1609c.png

 关于@ValueSource使用:@ValueSource(数据类型方法 = {参数1,参数2,.....})

看源码:

935b162200d44260a852636eb141b8ec.png

 2.4.2、多参数

89b2aabd16f242c9acf276f1a38992d4.png

关于@CsvSource使用:每个双引号就是一组测试用例,每个参数之间用逗号隔开

 当数据太多的时候,这样写就不太好了,可以直接从某文件中获取

25693fb71d8942a5b13ef1dd857c76cb.png

 文件:

fcbb9bf6c29c40ea82eeb836d6deef43.png

注意在进文件写数据时,需要在打开方式中 选择Excel方式打开

2.4.3、动态参数 

29973968e16b45268fd6cfecc7404879.png

b9b17db46b854c93a0b3130dded4ad41.png

 使用了参数化注解的方法不能再用@Test注解


2.5、测试套件

创建一个类,通过@Suite注解标识该类为测试套件类

631794708c874e8f9a37b82e50207458.png

2.5.1、指定类运行用例

2b67c086af804902b5695db80a880f9c.png

 结果:

be7c8bb1979f4672ba55641012393f00.png

2.5.2、指定包名来运行包下所有的用例

9d973c905045481183a015b019137369.png


3、单元测试的优点

  • 方便、快捷的测试一个功能模块【方法级别】
  • 在打包是会运行所有的单元测试,只有所有的单元测试都通过之后,才能正常的打包,所以在这个过程中可以帮我们发现一些问题,减少问题发生的概率
  • 使用单元测试可以在不污染数据库的情况下,来测试某个功能的正确性

好啦,本期到这啦,下期见咯~~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙洋静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值