单元测试------入门篇
作者:网络转载 发布时间:[ 2011/7/20 15:09:27 ] 推荐标签:
我们的单元测试这样算完成了吗?不,上面的测试只能算是一次验证而已。我们给的数据中,大值9是数组的后一个元素,如果9是第一个元素它还正确吗?如果数据是负数呢?等等。我们的求大值函数有着很多的边界情况需要单元测试来验证。
因此,我们在写单元测试之前,一定要对测试做一个周全的计划,预先设置好要测试的内容,可能发生错误的边界条件。
下面是对Largest做的测试计划:
1、数组元素的位置是否对大值产生影响?
[7,8,9] ? 9
[7,9,8] ? 9
[9,8,7] ? 9
2、如果有两个相等的大值,会出现什么情况呢?
[7,9,8,9] ? 9
3、如果数组中只有一个元素,结果会怎么样?
[1] - 1
4、如果元素都是负数呢?
[-7,-8,-9] - -7
完整的测试代码应该如下:
public class LargestTest extends TestCase {
public void testSimple(){
assertEquals(9,Largest.largest(new int[]{7,8,9}));
}
public void testOrder(){
assertEquals(9,Largest.largest(new int[]{7,9,8}));
assertEquals(9,Largest.largest(new int[]{9,8,7}));
}
public void testDups(){
assertEquals(9,Largest.largest(new int[]{7,9,8,9}));
}
public void testOne(){
assertEquals(1,Largest.largest(new int[]{1}));
}
public void testNegative(){
assertEquals(-7,Largest.largest(new int[]{-7,-8,-9}));
}
}
当然,你可以写完一个测试方法立即来运行它。这次并没有那么幸运了,在运行后一个测试方法testNegative()时出现了错误:
junit.framework.AssertionFailedError: expected:<-7> but was:<0>
at test.junit.LargestTest.testNegative(LargestTest.java:24)
细心的你,也许在一开始发现了Largest的这个Bug。原来我们的字段max初始化为0是不对的,应该改为Integer.MIN_VALUE。
由此我们可以想到,使用单元测试确实可以尽早的发现隐藏的BUG,上一篇我们也说过,越早发现BUG能节省更多的时间,降低更多的风险。
这是,我们的单元测试已经完美结束了吗?呵呵,也许你会想到,如果在largest()方法中传入数组为空,又会怎么样呢?这个问题留给我们的读者思考吧。
写到这里,算是入门结束了吧!关于JUnit的详细介绍,网上有非常多的文章,去google你可以找到一大堆。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11