Junit 4.7 Rule:另一种断言异常的方法(ExpectedException)

在Junit 4.7之后,加入了一种更容易断言异常以及异常信息的方法。

异常处理

//验证抛出异常类,以及错误信息
public class TestException {
    @Rule
    public ExpectedException expectedEx = ExpectedException.none();

    @Test
    public void testValidationException() throws ValidationException {
        //断言会抛出的异常,这句一定要在抛出异常之前,否则当异常抛出时,就会阻断运行之后的语句。
        expectedEx.expect(ValidationException.class);
        //断言得到的错误信息内容。注意:断言的信息可以是原错误信息的字串
        expectedEx.expectMessage("is not passed");
        throw new ValidationException("Password is not passed.");
    }
}
//随意定义一个异常类
class ValidationException extends Exception{
    ValidationException(String msg){
        super(msg);
    }
}

expectMessage

expectedEx.expectMessage方法在断言多种返回信息时非常有用。例如当验证密码的时候,有时候可能会断言一下两种异常:

throw new ValidationException(“密码必须包含字母和数字”);

throw new ValidationException(“密码不能大于16位”);


注意事项

  1. @Rule 注解的 ExpectedException 变量声明,它必须为 public
  2. @Test处,不能使用其他断言方式,例如@Test(expected=ValidationException.class),否则不能测试通过,也就是

    @Test(expected=ValidationException.class) 和测试方法中的

    expectedEx.expectXxx() 方法是不能同时并存的

  3. 保证被测试的方法在expectedEx.expectXxx() 方法后面,不然也不能通过验证
  4. expectedEx.expectMessage()中的参数可以是subString或Matcher,就是说断言及可以是子字符串,也可以是正则表达式
时间: 2024-08-13 18:18:43

Junit 4.7 Rule:另一种断言异常的方法(ExpectedException)的相关文章

Spring学习总结(14)——Spring10种常见异常解决方法

在程序员生涯当中,提到最多的应该就是SSH三大框架了.作为第一大框架的Spring框架,我们经常使用. 然而在使用过程中,遇到过很多的常见异常,我在这里总结一下,大家共勉. 一.找不到配置文件的异常 [plain] view plaincopy org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/

Spring10种常见异常解决方法

在程序员生涯当中,提到最多的应该就是SSH三大框架了.作为第一大框架的Spring框架,我们经常使用. 然而在使用过程中,遇到过很多的常见异常,我在这里总结一下,大家共勉. 一.找不到配置文件的异常 [plain] view plaincopy org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/

MyEssay 之 Python正则表达式 —— 四种断言扩展的理解

我们经常用正则表达式来检测一个字符串中包含某个子串,要表示一个字符串中不包含单个的某字符或某些字符也很容易,用[^...]形式就可以了.但是要表示一个字符串中不包含某个子串(由字符序列构成)的时候,用[^...]这种形式就不行了,此时就需要使用到四种正则表达式的扩展匹配了,即所谓的“正向前行匹配”  (?=...).“负向前行匹配” (?!...)."正向后行匹配" (?<=...)  .“负向后行匹配”(?<!...).其中的...又可以是任意的合法正则匹配字符串.类似于

JMeter常用的几种断言方法

?在使用JMeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过?本文 主要介绍几种常用的断言:响应断言.JSON断言.BeanShell 断言 一.响应断言 响应断言是最常用的一种断言方法,它可以对各种返回类型的结果进行断言,比如Test.html.application/json等 在需要进行断言的Sample,点击右键>添加>断言>响应断言 Apply to选项默认即可,M

结合Scikit-learn介绍几种常用的特征选择方法

作者:Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减少特征数量.降维,使模型泛化能力更强,减少过拟合 增强对特征和特征值之间的理解 拿到数据集,一个特征选择方法,往往很难同时完成这两个目的.通常情况下,我们经常不管三七二十一,选择一种自己最熟悉或者最方便的特征选择方法(往往目的是降维,而忽略了对特征和数据理解的目的).

数据归一化和两种常用的归一化方法

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性.原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价.以下是两种常用的归一化方法: 一.min-max标准化(Min-Max Normalization) 也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间.转换函数如下: 其中max为样本数据的最大

干货:结合Scikit-learn介绍几种常用的特征选择方法

原文  http://dataunion.org/14072.html 主题 特征选择 scikit-learn 作者: Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非常重要.好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点.底层结构,这对进一步改善模型.算法都有着重要作用. 特征选择主要有两个功能: 减少特征数量.降维,使模型泛化能力更强,减少过拟合 增强对特征和特征值之间的理解 拿到数据集,一个特征选择方法,往往很难同时完成这两个目的.通常情况下,我

基于Qt有限状态机人工智能的一种实现及改进方法

基于Qt有限状态机人工智能的一种实现及改进方法 人工智能在今年是一个非常火的方向,当然了,不仅仅是今年,它一直火了很多年,有关人工智能的一些算法层出不穷.人工智能在很多领域都有应用,就拿我熟悉的游戏领域来说吧,一些寻路算法,比如说A*算法(我的<十日驱鬼记>就曾经使用了A*算法进行寻路),还有一些高级的算法,比如说决策树等,都在游戏中得以了广泛的应用.我目前想制作的项目和人工智能也有一定的关系,因此,我这个月开始学习搭建一些简单的人工智能框架. 蒋彩阳原创文章,首发地址:http://blog

找1~100之间素数的两种比较简单的方法

方法一:利用一个布尔类型的值的判断,优点想法更直接易懂 public static void main(String[] args) { for(int i=2;i<=100;i++){ boolean b=true; for(int n=2;n<i;n++){ if(i%n==0){ b=false; break; } } if(b==true){ System.out.print(i+"\t"); } } } 方法二:能被2和这个数本身以外的数整除的都不是素数.理解难但