zoukankan      html  css  js  c++  java
  • 复利计算程序的单元测试

    复利计算之单元测试 

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

  • 相关阅读:
    数据持久化的基础知识
    svn常用命令
    关于SVN 目录结构
    linux查看CPU信息
    一个服务器上启动两台tomcat
    centos6.0 配置SVN
    mysql插入表情
    MAC 安装 PIL
    安装freetype
    Hadoop基本文件命令
  • 原文地址:https://www.cnblogs.com/gjpg/p/5336474.html
Copyright © 2011-2022 走看看