廖雪峰Java8JUnit单元测试-2使用JUnit-2异常测试
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异常测试的更多相关文章
- 廖雪峰Java8JUnit单元测试-2使用JUnit-4超时测试
1.超时测试 可以为JUnit的单个测试设置超时: 超时设置1秒:@Test(timeout=1000),单位为毫秒 2.示例 Leibniz定理:PI/4= 1 - 1/3 + 1/5 - 1/7 ...
- 廖雪峰Java8JUnit单元测试-2使用JUnit-1使用Before和After
1. @Before和@After 同一个单元测试内的多个测试方法: 测试前都需要初始化某些对象 测试后可能需要清理资源fileInputStream.close() @Test public voi ...
- 廖雪峰Java8JUnit单元测试-1JUnit简介-1JUnit测试
测试驱动开发(Test Driver Development) 1.使用main()方法测试的缺点: 只能有1个main()方法,不能把测试代码分离 没有打印出测试结果和期望结果,例如expected ...
- 廖雪峰Java8JUnit单元测试-2使用JUnit-3参数化测试
参数化测试: 可以把测试数据组织起来 用不同的测试数据调用相同的测试方法
- Junit的异常测试
方式1: @Test(expected = IndexOutOfBoundsException.class) public void empty() { new ArrayList<Object ...
- 廖雪峰Python电子书总结
函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...
- 廖雪峰python教程的第一个疑问
函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...
- 爬虫:把廖雪峰的教程转换成 PDF 电子书
写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...
- Python自学笔记-生成器(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...
随机推荐
- 面向对象text 01 盖伦vs瑞文vs提莫
''' Text For Class: League of Legends Garen vs Riven vs Teemo ''' import random # 全局随机 import time c ...
- Codeforces Hello 2018 E题Logical Expression dp+最短路 好题
j题目链接: http://codeforces.com/contest/913/problem/E 题意: 给你x,y,z三个变量,与& 或| 非! 括号() 四种运算符,规定括 ...
- pagerank算法在数学模型中的运用(有向无环图中节点排序)
一.模型介绍 pagerank算法主要是根据网页中被链接数用来给网页进行重要性排名. 1.1模型解释 模型核心: a. 如果多个网页指向某个网页A,则网页A的排名较高. b. 如果排名高A的网页指向某 ...
- 开发Canvas 绘画应用(四):实现拖拽绘画
在开发Canvas绘画应用(三):实现对照绘画中,我们实现了视图引导的第一部分,这一篇我们来完成第二部分,即将图片直接拖到画布上进行绘画. ✁ 拖放如何实现? [拖放的基本概念]:创建一个绝对定位的元 ...
- leetcode 381.Insert Delete GetRandom
这道题中要求使用O(1)的方法来删除和插入元素的,那么首先需要寻找到对应的元素,这个可以使用map的O(1)的查询时间的,然后是删除对应的元素的,那么可以根据 堆排序中类似的做法把最后面的元素插入到前 ...
- python中sys模块之输入输出错误流
import sys sys.stdout.write("msg") # 控制台白色字体打印 普通输出流 sys.stderr.write("msg") # ...
- vm12pro 安装winxp过程 记录1(涵个人问题)
1.百度的xp资源 选好iso文件后出现如下情景: 2.百度以后是要在一开始的首次界面就选择从哪个盘开始 3.选择了“Windowgs PE”选项…加载出界面后选择了ghost xp…现在…黑屏了…… ...
- jquery的相关用法
选择器基本选择器1.id选择器$('#id1')找到id为id1 的标签2.class选择器$('.class1')找到class中有class1这个类的标签3.标签选择器$('tag') 找到tag ...
- load data local to table
步骤: 1.使用show语句查找服务器上当前存在的数据库: 2.如果数据库存在,尝试访问它,之后创建表(我这里是之前创建的,所以就直接show tables) 3.将本地文件加载到表中,创建一个文本文 ...
- Javascript 3.2
对象的三种类型:1.用户定义对象:程序员自己创建的对象 2.内建对象:Javascript语言中的固定对象,如Array/Math/Data等 3.宿主对象:由浏览器提供的对象 BOM:浏览器对象模型 ...