普通的maven项目,导入junit4.12

这是一个有异常抛出的方法:

     /*** 获取某个目录下所有直接下级文件,不包括目录下的子目录的下的文件,所以不用递归获取* @param path 文件夹目录* @return path文件夹下的所有文件路径*/public static List<String> getFiles(String path) {if(null==path){logger.error("传入路径不能为空!");throw new RuntimeException("传入路径不能为空!");}File file = new File(path);if(!file.exists()){logger.error("文件路径不存在!");throw new RuntimeException("文件路径不存在!");}if(!file.isDirectory()){logger.error("请输入文件目录!");throw new RuntimeException("请输入文件目录!");}//存储文件夹下的所有文件路径List<String> files = new ArrayList<>();File[] tempList = file.listFiles();for (File value : tempList) {if (value.isFile()) {files.add(value.toString());}}return files;}

正常场景的单元测试就用 Assert.assertEquals(期望值,返回值)

异常场景的单元测试有两种。

一种是在测试方法上的@Test加上该方法会触发的异常class。调用方法触发异常的类型和期望的异常类型相同,测试通过。如下:

但这种方法无法判断异常信息。

@Test(expected = RuntimeException.class)
public void testGetFiles(){FileReadUtil.getFiles(null);
}

第二种就是可以判断抛出的异常信息的:

先在类上声明ExpectedException ,测试方法中第一行写期望的异常类型,第二行写异常信息(必须完全一样),最后再调用测试的方法。注意一定要最后再调用测试方法。

    @Rulepublic ExpectedException exception = ExpectedException.none();@Testpublic void testGetFiles() {//getFiles()的正常场景List<String> list= FileReadUtil.getFiles("src/main/data_test");Assert.assertEquals("src\\main\\data_test\\tcp_flow.avro",list.get(0));}@Testpublic void testGetFilesError1() {//getFiles()的异常场景1exception.expect(RuntimeException.class);exception.expectMessage("请输入文件目录!");FileReadUtil.getFiles("src\\main\\data_test\\tcp_flow.avro");}@Testpublic void testGetFilesError2() {//getFiles()的异常场景2exception.expect(RuntimeException.class);exception.expectMessage("文件路径不存在!");FileReadUtil.getFiles("src\\data");}@Testpublic void testGetFilesError3() {//getFiles()的异常场景3exception.expect(RuntimeException.class);exception.expectMessage("传入路径不能为空!");FileReadUtil.getFiles(null);}

使用第二种方法时注意不能混用第一种,也就是同时在@Test加异常期望值,这样的返回结果是不正确的。

一般使用第二种方法测试异常。

单元测试类运行:

Junit单元测试——如何正确测试异常相关推荐

  1. JUnit 4 如何正确测试异常

    我们在用 JUnit 测试方法异常的时候,最容易想到的办法就是用 try-catch 去捕获异常,需要断言以下几个条件: 1. 确实抛出的异常  2. 抛出异常的 Class 类型  3. 抛出异常的 ...

  2. JUnit单元测试案例——异常测试(测试语言Java)

    一. 异常测试 对可能抛出的异常进行测试: 异常本身是方法签名的一部分: public static int parselnt(String s) throws NumberFormatExcepti ...

  3. junit 5测试异常处理_使用JUnit 5测试异常

    junit 5测试异常处理 JUnit 5带来了令人敬畏的改进,并且与以前的版本有很大不同. JUnit 5在运行时需要Java 8,因此Lambda表达式可以在测试中使用,尤其是在断言中. 这些断言 ...

  4. 使用JUnit 5测试异常

    JUnit 5带来了令人敬畏的改进,它与以前的版本有很大的不同. JUnit 5在运行时需要Java 8,因此Lambda表达式可以在测试中使用,尤其是在断言中. 这些断言之一非常适合测试异常. 设置 ...

  5. 走向单体地狱(五):JUnit单元测试

    文章目录 JUnit 简介 概述 JUnit 特点 第一个 JUnit 单元测试 POM 创建测试类 JUnit 注解 JUnit 断言 什么是断言 常用断言方法 测试断言效果 JUnit 简介 概述 ...

  6. JUnit中测试异常抛出的方法

    最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...

  7. java单元测试测试异常_Java单元测试中出现意外异常

    我真的是JUnit的新手和一般的单元测试,我很难找到合适的方法.处理意外异常的更好方法是什么?为什么? 方法A: 首先捕获预期的,通过消息测试失败 在最后一个catch块中,捕获一般异常并使测试失败并 ...

  8. Android 白盒测试之单元测试(junit),黑盒测试之mokey测试

    导言: 做安卓也有几个年头,对于小项目基本都不去单元测试和稳定性测试等,都是在出现异常后通过debug处理或log打印即可解决,当然对于大的项目,由于运行时效问题,加快开发效率,一些测试方法必须要做, ...

  9. java junit 异常_JUnit:使用Java 8和Lambda表达式测试异常

    java junit 异常 在JUnit中,有许多方法可以在测试代码中测试异常,包括try-catch idiom JUnit @Rule和catch-exception库. 从Java 8开始,我们 ...

  10. junit 测试 异常_使用JUnit规则测试预期的异常

    junit 测试 异常 这篇文章展示了如何使用JUnit测试预期的异常. 让我们从我们要测试的以下类开始: public class Person {private final String name ...

最新文章

  1. 计算机统考408卷子谁批,【计算机统考】你对计算机统考408了解有多少?
  2. 五种JSP页面跳转方法详解
  3. 获取列表中最大N个数的索引
  4. js 格式化日期 (/Date(1400046388387)/)
  5. HihoCoder - 1441 后缀自动机一·基本概念(模拟,后缀自动机入门好题)
  6. java公钥加密私钥解密过程_GPG加密解密过程
  7. python3高级 之 生成器
  8. 发布一个基于 Reactor 模式的 C++ 网络库
  9. Leetcode 70.爬楼梯
  10. SpringBoot整合quartz的一个例子
  11. 认识 KEGG PATHWAY 数据库
  12. Drools规则引擎简介
  13. 洛谷:P1330 封锁阳光大学(二分图染色 + 最小同色点覆盖)
  14. 在线合并、分解PDF;PDF格式转换
  15. 4月书讯 | 一大波好书来袭,最美华章四月天
  16. 用Vue实现小Q聊天机器人(二)
  17. 儿童护眼灯怎么选?2022年好用的儿童护眼台灯推荐
  18. 一文读懂WPT系统中耦合的三种状态——过耦合、临界耦合、欠耦合时频率分裂对传输效率与功率的影响
  19. VB.net / 工业相机SDK / 获取Halcon图像
  20. 为什么用C语言编写操作系统?

热门文章

  1. layerdate时间控件的用法
  2. MATLAB基本语法速成
  3. 复杂网络-无标度网络BA模型
  4. linux 远程可视化
  5. Django Ajax文件下载
  6. 各种浏览器下的页面元素xpath获取方法
  7. CLRC663学习笔记
  8. AMS1117-3.3电源芯片损坏分析
  9. 让你的FireFox支持迅雷精简版
  10. 红外避障小车的代码编写