【软件测试】单元测试工具---Junit详解

这篇具有很好参考价值的文章主要介绍了【软件测试】单元测试工具---Junit详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.junit

1.1 junit是什么

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

虽然我们已经学习了selenium测试框架,但是有的时候测试用例很多,我们需要一个测试工具来管理这些测试用例,Junit就是一个很好的管理工具,简单来说Junit是一个针对Java单元测试的框架。Junit由Junit Platform _ Junit Jupiter + junit Vintage3部分组成。

1.2 Junit和Selenium的关系

Junit和Selenium是完全不同的两个东西!!!

在一个灯串上,如果说selenium编写的测试用例是一个小灯泡,那么junit就是把它们串起来的线。junit是用来管理selenium的测试用例的。

【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

2.junit技术

2.0 前置工作

在pom.xml文件中添加依赖

引入selenium:

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.7.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>

参数化:

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.9.2</version>
        </dependency>       

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.9.2</version>
        </dependency>

测试套件:

        <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.9.1</version>
        </dependency>
      
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>

2.1 junit常用注解

@Test

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

使用:

@Test
void + 方法名(){}

举例:

    //表示当前的方法是一个测试用例
    @Test
    void Test01(){
        // 创建了一个options对象,用来给请求设置一些参数
        ChromeOptions options = new ChromeOptions();
        // 允许所有的请求
        options.addArguments("--remote-allow-origins=*");
        //设置驱动路径
        System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Java\\jdk1.8.0_192\\bin\\chromedriver.exe");
        // 创建了一个驱动
        WebDriver webDriver = new ChromeDriver(options);
        //打开百度
        webDriver.get("https://www.baidu.com/");
    }

@BeforeAll 和 @AfterAll

这两个注解在整个测试的时候会执行一次。

@BeforeAll表示在当前类所有测试用例执行之前运行
@AfterAll表示在当前类所有测试用例执行之后运行
并且这两个方法都有static修饰,都只执行一次

使用:

@BeforeAll
static void 方法名(){}

举例:

	//当前类里面所有的测试用例执行之前执行这个方法
    @BeforeAll
    static void SetUp(){
        System.out.println("开始执行@BeforeAll修饰的方法");
    }

使用:

@AfterAll
static void 方法名(){}

举例:

	//当前类里面所有的测试用例执行之后执行这个方法
    @AfterAll
    static void TearDown(){
        System.out.println("开始执行@AfterAll对应的方法");
    }

运行结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

@BeforeEach 和 @AfterEach

这两个注解会在每一个测试用例执行的时候都执行一次。

  • @BeforeEach表示在每个测试方法执行前运行
  • @AfterEach表示在每个测试方法执行后运行

举例:

    @BeforeEach
    void BeforeTest(){
        System.out.println("这是一个@BeforeEach注解");
    }
    @AfterEach
    void AfterTest(){
        System.out.println("这是一个@AfterEach注解");
    }

结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

@Disabled

作用:忽略当前的测试用例

举例:

    //忽略当前的测试用例
    @Disabled
    //表示当前的方法是一个测试用例
    @Test
    void Test01(){
        // 创建了一个options对象,用来给请求设置一些参数
        ChromeOptions options = new ChromeOptions();
        // 允许所有的请求
        options.addArguments("--remote-allow-origins=*");
        //设置驱动路径
        System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Java\\jdk1.8.0_192\\bin\\chromedriver.exe");
        // 创建了一个驱动
        WebDriver webDriver = new ChromeDriver(options);
        //打开百度
        webDriver.get("https://www.baidu.com/");
    }

结果:并没有执行这个测试用例

【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

2.2 junit测试用例执行顺序

有人觉得junit的测试顺序是从上到下的,是这样吗?

先来看一个示例:

    @Test
    void Test06(){
        System.out.println("这是测试用例5");
    }

    @Test
    void Test05(){
        System.out.println("这是测试用例4");
    }


    @Test
    void Test04(){
        System.out.println("这是测试用例3");
    }

    @Test
    void Test02(){
        System.out.println("这是测试用例1");
    }

    @Test
    void Test03(){
        System.out.println("这是测试用例2");
    }

结果:

【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

以上结果表明了它不是按照从上到下执行的测试用例。

指定顺序执行

使用@TestMethodOrder(MethodOrderer.OrderAnnotation.class)+ @Order(数字)注解顺序执行测试用例。

举例:

//按照指定顺序执行测试用例
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {
    @Order(1)
    @Test
    void Test06(){
        System.out.println("这是测试用例5");
    }
    @Order(2)
    @Test
    void Test05(){
        System.out.println("这是测试用例4");
    }
    @Order(3)
    @Test
    void Test04(){
        System.out.println("这是测试用例3");
    }
    @Order(4)
    @Test
    void Test02(){
        System.out.println("这是测试用例1");
    }
    @Order(5)
    @Test
    void Test03(){
        System.out.println("这是测试用例2");
    }
}

结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome
是按照order里面的顺序执行的。

随机执行

使用@TestMethodOrder(MethodOrderer.Random.class)随机执行测试用例。

举例:

//按照随机顺序执行测试用例
@TestMethodOrder(MethodOrderer.Random.class)
public class JunitTest {
    @Order(1)
    @Test
    void Test06(){
        System.out.println("这是测试用例5");
    }
    @Order(2)
    @Test
    void Test05(){
        System.out.println("这是测试用例4");
    }
    @Order(3)
    @Test
    void Test04(){
        System.out.println("这是测试用例3");
    }
    @Order(4)
    @Test
    void Test02(){
        System.out.println("这是测试用例1");
    }
    @Order(5)
    @Test
    void Test03(){
        System.out.println("这是测试用例2");
    }
}

2.3 参数化测试

测试方法一般需要传参数。

单参数

使用 @ParameterizedTest + @ValueSource() 配合传递单参数

@ParameterizedTest : 注册参数

!!!注意:这两个注解不能和@Test一起使用,并且只能传一种类型的参数

示例:

    @ParameterizedTest  //注册
    @ValueSource(strings = {"1","2","3"})
    void Test07(String str){
        System.out.println(str);
    }

结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

多参数

上面只可以传入一种类型的参数,所以如果我们需要传入多种类型的参数,就可以使用csv 。

CSV

①直接传参数:使用@ParameterizedTest + @CsvSource()配合

举例:

    @ParameterizedTest
    @CsvSource({"1,2","3,4"})
    void Test08(String str,int num){
        System.out.println(str+" "+num);
    }

结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

②传递文件:使用@ParameterizedTest+ @CsvFileSource(resources = "文件名.csv")配合

!!!注意:文件必须是.csv类型

示例:

    @ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
    void Test09(int id,String name){
        System.out.println("id="+id+",name="+name);
    }

test01.csv文件内容:

1,温温
2,苏苏
3,怜怜

结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

方法传参

使用@ParameterizedTest + @MethodSource("方法名") 传入一个方法

示例:

    @ParameterizedTest  //注册参数
    @MethodSource("Generator")  //注册的参数是什么
    void Test10(String num,String name){
        System.out.println(num+" "+name);
    }

Generator方法代码:

	public static Stream<Arguments> Generator() {
        return Stream.of(Arguments.arguments("1,温温","2,苏苏"));
    }

结果:
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

2.4 断言

在软件测试中,断言(Assertion)是一种用于检查程序或系统在执行某些操作或运行某些代码后是否符合预期行为的技术手段。在测试中,断言通常用于验证代码的正确性,确保代码在满足特定条件时会产生预期的结果。

示例:

    @ParameterizedTest
    @ValueSource(ints = {10})
    void Test11(int num){
        //断言相等
        Assertions.assertEquals(num,10);
        //断言不相等
        Assertions.assertNotEquals(num,11);
    }
    @ParameterizedTest
    @ValueSource(strings = {"1"})
    void Test11(int num){
        //断言为空
        Assertions.assertNull(num);
        //断言不为空
        Assertions.assertNotNull(num);
    }

2.5 测试套件

测试套件(test suite)有时也称为验证套件(validation suite),是许多测试用例的集合,测试用例可用来测试一程式是否正确工作,测试套件包括许多测试用例,一般也会有针对测试用例及其测试目的的详细说明,在进行测试时的系统组态资讯以及测试前需进行的步骤。

通过测试套件,将服务于同一个测试目的或同一运行环境下的一系列测试用例有机的组合起来。测试套件是按照测试计划所定义的各个阶段的测试目标决定的,即先有测试计划,后面才有测试套件。

例如:此时有三个类的测试用例都需要测试。
【软件测试】单元测试工具---Junit详解,软件测试,单元测试,junit,selenium,java,chrome

通过测试套件全部测试:

方法①:在括号中写入测试类

@Suite
@SelectClasses({JunitTest.class, JunitTest02.class})
public class RunSuite {
}

方法②:根据指定的包来运行多个测试用例文章来源地址https://www.toymoban.com/news/detail-608405.html

@Suite
@SelectPackages({"org.example.junit01","org.example.junit"})
public class RunSuit {
}

到了这里,关于【软件测试】单元测试工具---Junit详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 软件测试(功能、工具、接口、性能、自动化、测开)详解

    软件测试(功能、工具、接口、性能、自动化、测开)详解

    一、软件测试功能测试 测试用例编写是软件测试的基本技能;也有很多人认为测试用例是软件测试的核心;软件测试中最重要的是设计和生成有效的测试用例;测试用例是测试工作的指导,是软件测试的必须遵守的准则。 黑盒测试常见测试用例编写方法 1、等价类 选取少数

    2024年02月07日
    浏览(15)
  • 软件测试实验:Junit单元测试

    软件测试实验:Junit单元测试

    目录 前言 实验目的 实验内容 实验要求 实验过程 题目一 题目一测试结果 题目二 题目二实验结果 总结 软件测试是软件开发过程中不可缺少的一个环节,它可以保证软件的质量和功能,发现并修复软件的缺陷和错误。软件测试分为多种类型,其中一种是单元测试,即对软件

    2024年02月02日
    浏览(16)
  • 软件测试--应用JUnit进行单元测试

    软件测试--应用JUnit进行单元测试

    JUnit是一个开源的Java编程语言的单元测试框架,最初由 Erich Gamma 和 Kent Beck 编写。Junit测试是一种白盒测试工具。JUnit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。具有JUnit经验对于应用“测试驱动开发(TDD)”的程序开发模型是非常重要的。 JUnit本质上是一套框

    2023年04月12日
    浏览(13)
  • 单元测试及其工具Junit

    单元测试及其工具Junit

    单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。 单元测试是软件测试的一种类型,测试对象是最基础的代码单元(函数、类、模块),属

    2024年02月10日
    浏览(9)
  • 单元测试工具——JUnit的使用

    单元测试工具——JUnit的使用

    ⭐️ 前言 ⭐️ 本篇文章主要介绍单元测试工具JUnit的使用。 🍉 欢迎点赞 👍 收藏 ⭐ 留言评论 📝 私信必回哟 😁 🍉 博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉 博客中涉及源码及博主日常练习代码均已上传GitHub JUnit提供了非常强大的注解功能

    2024年02月02日
    浏览(10)
  • 软件测试技术实验一 JUnit 单元测试的环境搭建

    软件测试技术实验一 JUnit 单元测试的环境搭建

    1、确安装并配置 IntelliJ IDEA开发环境 2、安装插件Junit4.x,进行测试环境搭建 3、根据给定的源代码,编写测试代码,并运行成功。 1、调试指导书给定的目标源代码,除掉明显的语法错误,记录正确无误的被测程序代码。被测程序 : (1) Account.Java (2)Tc_Account.java (3)由插

    2024年04月28日
    浏览(13)
  • 软件质量保证与测试技术实验报告(四)——JUnit单元测试

    软件质量保证与测试技术实验报告(四)——JUnit单元测试

    1.实验名称——JUnit单元测试 2.实验目的 (1)利用Junit进行单元测试,理解单元测试的任务、同时理解这类测试工具的实现原理; (2)理解断言的基本概念和断言测试方法; 3.实验内容 题目1:完成课件中Score_List的单元测试。 题目2:这是一个简单的计算器类——Computer,能

    2023年04月23日
    浏览(14)
  • 软件测试人员必备的60个测试工具清单!_软件测试配置清单

    软件测试人员必备的60个测试工具清单!_软件测试配置清单

    7、Gatling 前两种是比较常用的 4.C/S自动化工具 1,qtp (录制回放和脚本编辑),用到的是vb语言 2,winrunner IBM产品类似qtp 3,autoit 在窗口定位上做到很不错 5.白盒测试工具 1,jtest java语言的单元测试框架 2,JUnit 验证java的工具 3,cppunit 跨平台的c++单元测试框架 4,gtest 跨平台的

    2024年04月28日
    浏览(13)
  • 【软件测试】接口测试工具APIpost

    【软件测试】接口测试工具APIpost

    说实话,了解APIpost是因为,我的所有接口相关的文章下,都有该APIpost水军的评论,无非就是APIpost是中文版的postman,有多么多么好用,虽然咱也还不是什么啥网红,但是不知会一声就乱在评论区打广告,实在气愤,一律删帖。 但是,看的多了,也就有了装一下看看的冲动了

    2024年02月13日
    浏览(14)
  • 什么是软件压力测试?软件压力测试工具和流程有哪些?

    什么是软件压力测试?软件压力测试工具和流程有哪些?

    软件压力测试 一、含义: 软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,以及在高峰期或高负载情况下系统的响应

    2024年02月11日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包