复利计算程序的单元测试

复利计算之单元测试 

程序源代码已上传至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跟踪没有完善。我想后续会有不断的改进,得到自己想要的效果,即把整个复利计算程序的单元测试的所有情况都完善。

原文地址:https://www.cnblogs.com/gjpg/p/5336474.html