复利计算单元测试
测试环境如下:
测试模块 | 测试输入 | 预期结果 | 运行结果 |
计算本金(P = F / Math.pow((1 + i / m), N * m)) | (终值F,利率i,年限N,次数m) | 本金P | |
1 | (0.0,0.03,10,1) | 0 | √ |
1 | (10000.0,0.03,10,1) | 7440.93914896725 | √ |
2 | (9999999999999999999999999.0,0.03,10,1) | 7.44093914896725E24 | √ |
3 | (10000, 0, 10,1) | 10000.0 | √ |
4 | (10000, 0.03, 0,1) | 10000.0 | √ |
5 | (10000.0, 0.03, 10,0) | 无结果(除数不能为0) | 10000.0 |
测试模块 | 测试输入 | 预期结果 | 运行结果 |
求年限(N = (int) (Math.log(F / P) / Math.log(1 + i / m) / m)) | (终值F,本金P,利率i,次数m) | 年限N | |
1 | (100000, 1000, 0.03, 1) | 155 | √ |
2 | (0, 1000, 0.03, 1) | 无结果(log函数中的真数要大于0) | -2147483648(乱码) |
3 | (10000, 0.0, 0.03, 1) | 无结果(除数不能为0) | 2147483647(乱码) |
4 | (10000, 1000, 0, 1) | 无结果(因为log1=0) | 2147483647(乱码) |
5 | (10000, 1000, 0.03, 0) | 无结果(除数不能为0) | 0 |
其他方法的测试和以上两种类似:1.单利计算公式:F = P + P * N * i;
2.求终值:F = P * Math.pow((1 + i / m), N * m);
3.年利率计算公式:rate = m * (Math.pow(F / P, 1.0 / (N * m)) - 1);
4.等额投资计算公式:final_value = P * 12 * (1 + i) * (Math.pow(1 + i, N) - 1) / i;
5.等额还款公式:refund = F * i / (12 * (1 + i) * (Math.pow(1 + i, N) - 1));
测试主要代码:
测试正常:
测试异常:
源代码地址:github:https://github.com/zzy999/fulijisuan/blob/master/Compound_int.java
博客园:http://www.cnblogs.com/zzy999/p/5323715.html
测试代码地址:https://github.com/zzy999/fulijisuan/blob/master/test.java
总结:
第一次用单元测试来测试程序,感觉还是很吃力的,有很多不懂的地方,后来经过老师的指点,同学之间的交流和网上的查找,最终做出来了,可能还有很多不足的地方,这都有待我自己去改进。