junit 测试 异常

这篇文章展示了如何使用JUnit测试预期的异常。 让我们从我们要测试的以下类开始:

public class Person {private final String name;private final int age;/*** Creates a person with the specified name and age.** @param name the name* @param age the age* @throws IllegalArgumentException if the age is not greater than zero*/public Person(String name, int age) {this.name = name;this.age = age;if (age <= 0) {throw new IllegalArgumentException('Invalid age:' + age);}}
}

在上面的示例中,如果人员的年龄不大于零,则Person构造函数将引发IllegalArgumentException 。 有多种方法可以测试此行为:

这是我最喜欢的方法。 ExpectedException规则允许您在测试中指定期望的异常,甚至是异常消息。 如下所示:

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;public class PersonTest {@Rulepublic ExpectedException exception = ExpectedException.none();@Testpublic void testExpectedException() {exception.expect(IllegalArgumentException.class);exception.expectMessage(containsString('Invalid age'));new Person('Joe', -1);}
}

如下面的代码片段所示,您可以在@Test批注中指定预期的异常。 仅当test方法抛出指定类的异常时,测试才会通过。 不幸的是,您无法使用这种方法测试异常消息

@Test(expected = IllegalArgumentException.class)
public void testExpectedException2() {new Person('Joe', -1);
}

在引入注释和规则之前,这是旧版本的JUnit使用的“传统”方法。 将您的代码包含在try-catch子句中,并测试是否引发了异常。 如果未引发异常,请不要忘记使测试失败!

@Test
public void testExpectedException3() {try {new Person('Joe', -1);fail('Should have thrown an IllegalArgumentException because age is invalid!');} catch (IllegalArgumentException e) {assertThat(e.getMessage(), containsString('Invalid age'));}
}

参考: fahd.blog博客上的JCG合作伙伴 Fahd Shariff 用JUnit规则测试了预期的异常 。

翻译自: https://www.javacodegeeks.com/2013/02/testing-expected-exceptions-with-junit-rules.html

junit 测试 异常

junit 测试 异常_使用JUnit规则测试预期的异常相关推荐

  1. junit 5测试异常处理_在JUnit中处理异常的3种方式。 选择哪一个?

    junit 5测试异常处理 在JUnit中,有3种流行的方式来处理测试代码中的异常: 试捕习语 使用JUnit规则 带注解 我们应该使用哪一个?何时使用? 试捕习语 这个习语是最受欢迎的习语之一,因为 ...

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

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

  3. java junit 怎么写_使用JUnit测试java代码

    标签: Junit 单元测试实验报告 一.实验环境 MyEclipse2014.Junit4.10 二.实验目的 学会单元测试,在MyEclipse中进行Junit测试 三.实验步骤 1.写出要测试的 ...

  4. 怎样编写测试类测试分支_编写干净的测试–从配置开始

    怎样编写测试类测试分支 很难为干净的代码找到一个好的定义,因为我们每个人都有自己的单词clean的定义. 但是,有一个似乎是通用的定义: 简洁的代码易于阅读. 这可能会让您感到有些惊讶,但我认为该定义 ...

  5. java如何做测试数据库_如何模拟用于测试的数据库(Java)?

    我在Java编程,我的应用程序正在做很多使用DB.因此,重要的是我能够轻松地测试我的数据库使用. 什么是数据库测试?对我来说,他们应该提供两个简单的要求: >验证SQL语法. >更重要的是 ...

  6. 怎样编写测试类测试分支_编写干净的测试–天堂中的麻烦

    怎样编写测试类测试分支 如果我们的代码有明显的错误,我们很有动力对其进行改进. 但是,在某些时候,我们认为我们的代码"足够好"并继续前进. 通常,当我们认为改进现有代码的好处小于所 ...

  7. 怎样编写测试类测试分支_编写干净的测试-被认为有害的新内容

    怎样编写测试类测试分支 很难为干净的代码找到一个好的定义,因为我们每个人都有自己的单词clean的定义. 但是,有一个似乎是通用的定义: 简洁的代码易于阅读. 这可能会让您感到有些惊讶,但我认为该定义 ...

  8. eos测试规格_希望您的测试更有效? 这样写您的规格。

    eos测试规格 by Edd Yerburgh 埃德·耶堡(Edd Yerburgh) 希望您的测试更有效? 这样写您的规格. (Want your tests to be more effectiv ...

  9. 网络分析仪测试线损_关于网络分析仪的测试(校准线损问题)

    关于网络分析仪的测试(校准线损问题) ljq200 Post at 2007/7/4 0:48:47 今天有机会用了一下网络分析仪,HP7853E的,感觉还好,想用它来测测天线的匹配,先是用校准器来校 ...

最新文章

  1. 20+ 个很棒的 jQuery 文件上传插件或教程(此文值得“推荐”和“收藏”)
  2. java swt 不显示图片_Java SWT按钮图像未刷新
  3. php asp.net des,转DES的dotNet到php实现
  4. 红宝书阅读笔记——OPENGL渲染管线
  5. ios弧形进度条_iOS手把手教你实现圆形进度条
  6. 使用localStorage存储表单数据
  7. 【工具】Sublime Text 自动保存功能
  8. vCenter上解决”此主机当前没有管理网络冗余“的警告
  9. 基于原生js且非canvas实现的中国象棋(第一版)
  10. 线性代数(四十二) : 超定方程组
  11. 直流侧电力有源滤波器滤除谐波干扰的原理及方案
  12. asp.net+js+ajax实现手机移动端页面预览、剪裁、上传头像图片
  13. 微前端究竟是什么?微前端核心技术揭秘!
  14. 微信小程序上传和下载文件
  15. 华为路由器可以连接几个设备_华为如何设置连接两个无线路由器
  16. word中段落里面的选项“如果定义了文档网格,则对齐到网格”起什么作用?
  17. 海量工业数据如何应用?能源企业率先做了这些尝试
  18. 欢迎访问互联网进化论官方网站
  19. java中父类与子类有相同属性调谁?取决于左边
  20. 树讲解——紧急集合(lca)

热门文章

  1. 20 个使用 Java CompletableFuture的例子
  2. 史上最全Java多线程面试题
  3. 2019蓝桥杯省赛---java---A---4(迷宫)
  4. php划分年龄段,儿童时期是怎样划分年龄阶段的
  5. 外部访问docker容器(docker run -p/-P 指令) docker run -d -p 5000:5000 {hostPort:containerPort(映射所有接口地}
  6. jsp连接mysql数据库 例子_JSP 连接 MySQL 数据库的例子
  7. 转:Centos防火墙设置与端口开放的方法
  8. jvm高级特性第4章-虚拟机性能监控与故障处理工具
  9. mybatis_user_guide(8) 日志
  10. 代理模式(多线程实现状态监控)