1.异常测试

对可能抛出的异常进行测试:

  • 异常本身是方法签名的一部分:

    * public static int parseInt(String s) throws NumberFormatException
  • 测试错误的输入是否导致特定的异常:

    * Integer.parseInt(null)

    * Integer.parseInt("")

    * Integer.parseInt("xyz")

2.异常测试的方法:

  • 使用try..catch (Exception e)捕获异常,但这样会编写许多try..catch代码
  • expected测试异常,推荐

2.1示例1

package com.testList;

import org.junit.*;

import static org.junit.Assert.fail;

public class SequenceTest {
//使用try...catch
@Test
public void test1() throws Exception{
try {
Integer.parseInt(null);
fail("should throw java.lang.NumberFormatException");
}catch (NumberFormatException e){
System.out.println("pass");
}
}
//使用expected捕获异常
@Test(expected = NumberFormatException.class)
public void test2() throws Exception{
Integer.parseInt("p");
}
}


### 2.2示例2
Calculator.java
```#java
package com.testList;

public class Calculator {

public int calculator(String expression){

if (expression == null){

throw new NumberFormatException();

}

String[] ss = expression.split("\+");

int sum = 0;

for(String s:ss){

sum = sum + Integer.parseInt(s.trim());

}

return sum;

}

}

CalculatorTest.java
```#java
package com.testList; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import java.util.Calendar; import static org.junit.Assert.*; public class CalculatorTest {
Calculator calc;
@Before
public void setUp(){
calc = new Calculator();
}
@Test(expected = NumberFormatException.class)
public void testCalcWithEmptyString(){
int r = calc.calculator("");
}
@Test(expected =NumberFormatException.class)
public void testCalcAdd3Numbers(){
int r = calc.calculator(null);
}
@After
public void tearDown(){
calc = null;
}
}

3.总结

  • 测试异常可以使用@Test(expected = Exception.class)
  • 对可能发生的每种类型的异常进行测试

廖雪峰Java8JUnit单元测试-2使用JUnit-2异常测试的更多相关文章

  1. 廖雪峰Java8JUnit单元测试-2使用JUnit-4超时测试

    1.超时测试 可以为JUnit的单个测试设置超时: 超时设置1秒:@Test(timeout=1000),单位为毫秒 2.示例 Leibniz定理:PI/4= 1 - 1/3 + 1/5 - 1/7 ...

  2. 廖雪峰Java8JUnit单元测试-2使用JUnit-1使用Before和After

    1. @Before和@After 同一个单元测试内的多个测试方法: 测试前都需要初始化某些对象 测试后可能需要清理资源fileInputStream.close() @Test public voi ...

  3. 廖雪峰Java8JUnit单元测试-1JUnit简介-1JUnit测试

    测试驱动开发(Test Driver Development) 1.使用main()方法测试的缺点: 只能有1个main()方法,不能把测试代码分离 没有打印出测试结果和期望结果,例如expected ...

  4. 廖雪峰Java8JUnit单元测试-2使用JUnit-3参数化测试

    参数化测试: 可以把测试数据组织起来 用不同的测试数据调用相同的测试方法

  5. Junit的异常测试

    方式1: @Test(expected = IndexOutOfBoundsException.class) public void empty() { new ArrayList<Object ...

  6. 廖雪峰Python电子书总结

    函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...

  7. 廖雪峰python教程的第一个疑问

    函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...

  8. 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  9. Python自学笔记-生成器(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...

随机推荐

  1. zt secureCRT serialNo

    Name: ygeR Company: TEAM ZWT SerialNumber: 03-77-119256 License Key: ABH2MJ 9YVAC5 Z17QF7 4ZAS7Z ABG ...

  2. 牛客网PAT乙级(Basic Level)真题-组个最小数 (20)

    组个最小数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定数字0-9各若干个.你可以以任意顺序排 ...

  3. css设置文字多余部分显示省略号

    如果只显示一行,则可以使用以下方法: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 如果需要显示多行,在需要设置的元素s ...

  4. WEB学习笔记11-高可读性的HTML之如何设置网页标题层级

    标题标签指的是<h1>~<h6>这6个标签,统称为<hx>标签. (1)在页面内容的标题部分使用<hx>标签 <h1 class="re ...

  5. Linux系统安装与初用

    1.结合实验尝试,并查阅资料,总结在实验准备中提出的7个问题. (1).Linux的发行版本.内核版本:二者区别与联系. 核心版本主要是Linux的内核,发行版本是各个公司推出的版本,他们与核心版本是 ...

  6. jsonModel使用

    流弊的JSON数据模型框架 https://github.com/jsonmodel/jsonmodel 版本 1.3.0 如果你喜欢JSONModel,并且使用了它,请你: star一下 给我一些反 ...

  7. 用PHP判断是否闰年(正则匹配法)

    <?php /** * PHP判断是否闰年 */ $year="2004-02-29"; $pattern='/(([0-9]{3}[1-9]|[0-9]{2}[1-9][0 ...

  8. hyperscan在低版本系统应用问题

    编译环境:centos6.3 32位/64位 由于hyperscan使用许多C++11特性,在低版本系统gcc版本不能编译.后来发现在runtime时也就是hs_scan时只需要依赖libhs_run ...

  9. 锋利的jQuery初学(3)

    jQuery详细介绍 1,$的含义:就是一个名称符号:jquery占用了两个变量:$和jquery; 2,js与jQuery的入口函数区别 (1),js的window.onload事件是等到所有内容加 ...

  10. spring3-struts2整合

    spring  负责对象创建 struts   用Action处理请求 说明: spring版本:spring-framework-3.2.5.RELEASE struts版本:struts-2.3. ...