天天看点

【助教】关于单元测试(二)

故事还在继续......

小张童鞋写的程序一直未报bug,这激发了他继续编程的兴趣,于是乎,他又写了个除法程序,说到除法,就不得不考虑的一种情况:

除数为零怎么办? 答:抛出异常。

所以,小张童鞋要解决两个问题:

除数为零应该抛出什么异常?(让小李有思想准备来处理这种异常) 用单元测试怎么测试这种异常?

为了解决第一个问题:

小张先写了一个最简单的版本:

想知道想知道报什么异常,调用一下就知道了,于是他写了一个main方法来调用他的除法程序,而且刻意让除数为零,观察Eclipse下报了什么错。

运行一下发现控制台报错:

所以第一个问题的答案是:java.lang.ArithmeticException

PS:关于这个异常,无论你百度谷歌必应搜狗,你都可以找到这个异常的意思是什么,即便是英文版的java的API:

http://docs.oracle.com/javase/8/docs/api/index.html

中对这个异常的英文描述,相信你都可以看得懂:

**Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class. **

所以,小张自热而然的把自己的程序处理成这样:

我们来解决第二个问题:

说到单元测试的情况,我们依然可以借用之前说的那句话:

// 我想测 一测: // 参数传入 // 我的待测方法里面, // 得出的结果会不会是:我期待的结果
// 0作为除数传入 // 我的除法方法里面, // 得出的结果会不会是:抛出 java.lang.ArithmeticException异常

按照上一篇的方法建立单元测试:

这里重点看这句:

的意思就是说:当我除数为0时候,我期待程序结果是:

抛出 ArithmeticException异常

运行这个测试方法,显示绿色条,这种情况测试通过。

小张开开心心的把写好的的除法程序给小李用,没想到,"噩梦"才刚刚开始......

继续阅读