廖雪峰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/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...
随机推荐
- Spring 注入集合
Spring 中,注入集合类型的数值方式 <bean id="javaCollection" class="com.qie_zi.JavaCollection&qu ...
- 5--Postman上传文件
请求: charles抓到请求信息: request: --21b63bd3-1543-46cf-ab25-eaa5adf82688Content-Disposition: form-data; na ...
- cobbler批量化安装系统
- C# Winform 国际化
1.在Form的language属性选择中文,来制作中文界面 保存后,设置界面标题会变成如下所示,并且会出现一个zh-CN的资源文件,打开resx文件可看到相应内容 2.将Form的language属 ...
- 关于TCP和MQTT之间的转换(转载)
现在物联网流行的就是MQTT 其实MQTT就是在TCP的基础上建立了一套协议 可以看这个,本来我自己想用Wireshark监听一下,不过百度一搜索一大把,我就不测试了 https://blog.csd ...
- 【oracle】生成AWR报告
[第一步]找到awrrpt.sql文件 [ora11g@vm-kvm11820-app ~]$ locate awrrpt.sql /DATA/opt/app/ora11g/product//rdbm ...
- ccf-集合竞价-201412-3
这道题数据量很小,所以用前缀和直接暴力解决了 首先将浮点数转换为整数; int_p=(int)(dou_p*100+0.5); 必须加一个eps,否则浮点数运算会有误差 然后从高到低枚举 #inclu ...
- Bartender标签传参与打印
在VS中添加bartender的COM组件引用后(一定要添加,否则会提示找不到BarTender.Application): /// <summary> /// Bartender模板打印 ...
- Qt实现 动态化遍历二叉树(前中后层次遍历)
binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> ...
- Spring(转载一)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...