复利计算程序的单元测试
复利计算之单元测试
程序源代码已上传至https://github.com/ganjiaping/ganjiaping.git,同时Github上的Wiki页面,有说明如何部署运行该项目/程序。
(要测试的程序的文件名为:FuLiLatese.java;单元测试的文件名为:FuLiLateseTest.java)
场景分析,期待的返回值以及运行结果如下表:
测试模块
|
测试输入
|
预期结果
|
运行结果
|
bug跟踪
|
复利本息和 |
3000;0.03;8 |
3800 |
3800.31 |
|
单利本息和 |
3000;0.03;8 |
3720 |
3720.0 |
|
本金 |
0.03;8;20000 |
15788 |
15788.18 |
|
存的年数 |
10000;0.03;30000 |
38 |
38.0 |
|
年报酬率 |
10000;8;20000 |
0.09 |
0.091 |
|
年资产总值 |
20000,0.03;5 |
109368 |
109368.2 |
|
本息还款 |
100000;0.065;10 |
1135 |
1135.4798 |
对FuLiLatese项目写了FuLiLateseTest单元测试程序。主要测试FuLiLatese程序中的每个方法即(本息和、本金、存的年数、年报酬率、年资产总值、本息还款)是否正确,即给定数值给函数,判断结果是否与预期一致。从源代码运行后的结果(如下图)来看,FuLiLatese程序是不存在错误的。
源程序:
package gjp; import static org.junit.Assert.*; import gjp.FuLiLatese.Logarithm; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class FuLiLateseTest { FuLiLatese cal; @Before public void setUp() throws Exception { cal=new FuLiLatese(); } @Test public final void testBenxihe() { double b=3000; double l=0.03; double n=8; double sum1 = (float) (b * Math.pow(1 + l, n)); double sum2 = b * (1 + l * n); Assert.assertEquals(3800.31, sum1, 1.00); Assert.assertEquals(3720.0, sum2, 1.0); } @Test public final void testBenjin() { double l=0.03; double n=8; double h=20000; double b=(float) (h*1/Math.pow(1+l, n)); Assert.assertEquals(15788.18, b, 1.00); } @Test public final void testNianshu() { double b=10000; double l=0.03; double h=30000; double n=Logarithm.log(h/b,1+l);; Assert.assertEquals(38.0, n, 1.0); } @Test public final void testLilu() { double b=10000; double n=8; double h=20000; double l=Math.pow(h/b, 1.0/n)-1;; Assert.assertEquals( 0.091, l, 0.005); } @Test public final void testNianzongzhi() { double b=20000; double l=0.03; double n=5; double h = b * (1 + l) * (Math.pow(1 + l, n) - 1) / l; Assert.assertEquals( 109368.2, h, 1.0); } @Test public final void testBenxiHuankuan() { double h=100000; double l=0.065; double n=10; l = l / 12; n = n * 12; double b = h * l * Math.pow(1 + l, n) / (Math.pow(1 + l, n) - 1); Assert.assertEquals( 1135.4798, b, 1.0); } }
运行结果:
总的来说,这次的单元测试不是很理想。因为测试不存在错误,所以bug跟踪没有完善。我想后续会有不断的改进,得到自己想要的效果,即把整个复利计算程序的单元测试的所有情况都完善。
posted on 2016-03-30 22:33 ganxiaoxiao 阅读(182) 评论(0) 编辑 收藏 举报