Junit单元测试异常处理方法

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

Junit单元测试异常处理方法

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


前言

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

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




案例准备

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

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

Junit单元测试异常处理方法_第1张图片



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



创建测试类
Junit单元测试异常处理方法_第2张图片



一、类方法内处理异常

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


Junit单元测试异常处理方法_第3张图片


测试类中测试通过

Junit单元测试异常处理方法_第4张图片



二、测试方法中处理异常

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

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


Junit单元测试异常处理方法_第5张图片



1.try/catch/finally 语句

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

下图为例:

Junit单元测试异常处理方法_第6张图片



2.@Test(expected)

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

下图为例

Junit单元测试异常处理方法_第7张图片



3.@ExpectedException

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

下图为例:

Junit单元测试异常处理方法_第8张图片

你可能感兴趣的:(Java基础,测试,junit,单元测试)