码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Junit单元测试异常处理方法


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    Junit单元测试异常处理方法

    • 前言
    • 案例准备
    • 一、类方法内处理异常
    • 二、测试方法中处理异常
      • 1.try/catch/finally 语句
      • 2.@Test(expected)
      • 3.@ExpectedException


    前言

    提示:这里可以添加本文要记录的大概内容:

    开发者在进行Java编程时会对程序中的异常进行处理。一般的,可以发生异常的方法内添加 try/catch/finally 等处理语句,在方法内部解决异常;也可以使用throw / throws 语句交由方法上一层进行解决。因此,在单元测试也应当考虑方法抛出异常的情况,对异常的处理也应当纳入单元测试框架中。JUnit提供了多种异常处理的机制,以帮助测试者验证需要处理的异常代码,本篇文章我们主要来探讨一下JUnit处理异常的方法




    案例准备

    提示:可结合下面实例理解异常处理方法

    创建一个Caculator计算类,供测试类使用

    在这里插入图片描述



    由Caculator中我们主要测试除法中分母不能为0的异常处理,当分母为0时,会抛出ArithmeticException异常



    创建测试类
    在这里插入图片描述



    一、类方法内处理异常

    我们可以直接在方法中处理异常(主要由try/catch语句处理异常),然后在测试类中就不需要再处理异常,如下图所示


    在这里插入图片描述


    测试类中测试通过

    在这里插入图片描述



    二、测试方法中处理异常

    我们也可以不在调用的方法内处理异常,而是由方法抛出交给测试方法类处理,在测试方法中处理异常主要有三种方式

    注:测试方法中调用的方法为Caculator中的未处理异常的devide1()方法


    在这里插入图片描述



    1.try/catch/finally 语句

    如同在类中方法一样,我们也可以直接在测试方法中使用try/catch/finally语句捕获异常

    下图为例:

    在这里插入图片描述



    2.@Test(expected)

    @Test注解中的参数expected允许测试者设置Throwable的子类,用于检测待测方法是否正确抛出异常。如针对方法divide1(),可以用下图的方法进行异常检测。该方法配置比较简单,易于使用,然而,该方法不能直接表明异常发生的位置,测试者需要进一步定位。

    下图为例

    在这里插入图片描述



    3.@ExpectedException

    Junit中的ExpectedException可以更精确地定位异常发生的位置,在应用ExpectedException类前,需要用@Rule 注解声明ExpectedException异常。然后在异常发生的位置前调用 expect 方法检测异常,此外,还可使用ExpectedException中的expectMessage方法设置异常属性信息

    下图为例:

    在这里插入图片描述

  • 相关阅读:
    如何在两个月内学会Python编程?——最佳学习计划指南
    智能工厂落地的三种模式,你了解多少?
    SUSCTF2022 Misc-AUDIO&RA2
    【附源码】Python计算机毕业设计网络教育平台设计
    【Svelte】-(4)If 条件判断语句 / Each 循环语句 / Await 异步处理块
    外包的水太深了,18k的阿里外包不太敢去.....
    会展购票系统有哪些特点?如何选择好的会展购票系统开发公司
    Nomad 系列-Nomad+Traefik+Tailscale 集成实现零信任安全
    Vue路由&nodeJS环境搭建
    Websocket在Asp.net webApi(.net framework)上的应用
  • 原文地址:https://blog.csdn.net/haobabiu/article/details/132921149
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号