首页 > 其他分享 >单元测试-异常测试

单元测试-异常测试

时间:2023-07-06 16:36:02浏览次数:49  
标签:ExpectedException 单元测试 BusinessRuntimeException 测试 Test 异常

前面的文章(Java中的单元测试)已经说过单元测试中的mock测试,大都是正常分支下的测试,异常测试用于测试某些场景下是否会触发指定的异常,用来验证代码逻辑的正确性。目前根据Junit的版本有三种不同的方式,如下:

1、@Test注解中的expected属性

此方式比较简单,但是存在局限性,就是只能判断异常类型,无法判断详细的异常信息,现在大多数业务代码中的自定义异常都是运行时异常,需要通过错误码和错误信息来判断异常是否是期望的异常。

@Test(expected = BusinessRuntimeException.class)
public void testCommentEditExceptionotherCreator(){
    service.test();
}

2、ExpectedException的方式

这种方式需要ExpectedException搭配@Rule注解,这种方式可以指定异常的类型和异常信息,并可以通过实现匹配器来匹配复杂的异常信息,能比较精准的判断异常场景。在Junit比较高的版本,none()方法已经弃用。

@Rule
ExpectedException expectedException = ExpectedException.none();

@Test
public void testCommentEditExceptionotherCreator(){
    expectedException.expect(BusinessRuntimeException.class);
    expectedException.expectMessage("文档不存在");
    serviceImpl.editComment(null);
}

 3、Assert.assertThrows()

Junit较高版本中,已经支持通过断言方式匹配指定异常,使用方法很简单,示例如下:

@Test
public void testCommentEditException(){
    //断言异常
    Assert.assertThrows("异常信息",BusinessRuntimeException.class,() -> serviceImpl.editComment(null);
}

标签:ExpectedException,单元测试,BusinessRuntimeException,测试,Test,异常
From: https://www.cnblogs.com/zhaodalei/p/17528551.html

相关文章

  • 轻量、便捷、高效—经纬恒润AETP助力车载以太网测试
        随着自动驾驶技术和智能座舱的不断发展,高带宽、高速率的数据通信对主干网提出了稳定、高效的传输要求,CAN(FD)\LIN已无法充分满足汽车的通信需求。车载以太网作为一种快速且扩展性好的网络技术,已经逐步成为了汽车主干网的首选。此外,为了满足车载网络日益复杂的通信需求(......
  • 1.Vue3 配置开发-测试环境
    1、根目录新建.env.testing、.env.donline文件2、package.json=》scripts中配置"start":"vue-cli-serviceserve--modetesting","start-o":"vue-cli-serviceserve--modedonline"3、vue.config.jsconstBundleAnalyzerPlugin=require(&......
  • 使用strace测试打开程序响应时间
    我们想要知道一个程序从运行到打开的响应时间可以使用strace命令测试写一个运行打开某个程序的脚本例如一下脚本可以打开wpstest.sh#!/bin/bash#/usr/bin/google-chrome-stablewww.baidu.com/usr/bin/wps#/usr/bin/kylin-software-center#/usr/bin/kylin-musicexit运行......
  • Python 异常处理(转载)
    Python异常处理什么是异常异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下语法错误这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正#语法错误示......
  • Doris插入数据底层存储测试
    建表语句CREATETABLEIFNOTEXISTSbase_site_test(site_idINTDEFAULT'10',city_codeINT,user_nameVARCHAR(32)DEFAULT'',pvBIGINTDEFAULT'0')UNIQUEKEY(site_id,city_code)DISTRIBUTEDBYHASH(site_id)BUCKETS3;导入测试数据......
  • 激光雷达基础介绍与仿真测试流程
    随着智能驾驶领域的快速发展与普及,激光雷达的轻量化、电子化和芯片化也逐渐成为趋势。由于激光雷达不受光线影响、分辨力高、支持3D立体,点云还支持AI算法训练等优点,一些主流车型在L3级别的智驾功能应用上搭载了激光雷达,从而完成更可靠和准确的目标探测。 在L2+或L3级以上的智驾......
  • dumpbin工具使用-由zlib编译前缀少加预处理器命令引起的异常-扩展
    对zlib使用vs2019编译,没有在预处理器中加前缀命令,导致编译出来的zlib.dll与项目之前使用的函数名不一致,运行报错。报错信息:无法在DLL“libz64”中找到名为“Z_inflateEnd”的入口点。 在z.conf中有以下注释:/**Ifyou*really*needauniqueprefixforalltypesandl......
  • 办公室规则制度账号密码(测试)
    办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账号密码(测试)办公室规则制度账......
  • Jmeter学习之八_测试kafka
    Jmeter学习之八_测试kafka背景最近在持续学习.昨天学习了grafana展示Jmeter测试数据库的结果今天想着能够测试一下kafka验证一下kafka的吞吐量等信息说干就干的.遇到的坑本来计划使用pepper-box或者是kafkameter进行相关的测试工作但是发现资料都比较陈旧,耗费了非......
  • gitflow为什么要单独检出一个release分支?在develop分支上测试不行吗
    在Gitflow工作流中,将release分支从develop分支中单独检出的主要原因是为了在发布之前进行稳定性和功能测试,以确保发布版本的质量。以下是几个原因说明为什么要单独检出release分支进行测试:隔离开发和测试环境:通过将测试从开发环境(develop分支)隔离出来,可以避免测试中......