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

    测试要求:

       对我们和复利计算程序,写单元测试。 

       有哪些场景?

       期待的返回值

       写测试程序。

       运行测试。

    1.源代码:https://github.com/rongjielong/rongjielong/blob/master/calculate/src/exercise.java

    2.测试代码:https://github.com/rongjielong/rongjielong/tree/master/calculate/src/test

    3.测试示例:

    测试模块

    测试输入

    预期结果

    运行结果

    bug跟踪

    计算终值

    (本金,年限,利率)

    终值

       
    单利:1150 (1000, 5, 0.03) 1150

     
      (0,10,0.05) 请输入您想要存储的金额数量:

    没有提示,显示0

    已改进。弹出提示:请输入您想要存储的金额数量:
      (aaa,3,0.23) 请输入您想要存储的金额数量: 出错。出现乱码异常 已改进。弹出提示:请输入您想要存储的金额数量:
      (-10000,10,22) 请输入您想要存储的金额数量: 出错。出现负数 已改进。弹出提示:请输入您想要存储的金额数量:
      (1000,-2,0.5) 请输入您想要存储金额的时间(年): 出错。显示负数 已改进。弹出提示:请输入您想要存储金额的时间(年):
      (3000,abc,0.2) 请输入您想要存储金额的时间(年): 出错。数据异常 已改进。弹出提示:请输入您想要存储金额的时间(年):
      (5000,10,-1) 请输入您想要设计的年利率: 出错。出现负数 已改进。弹出提示:请输入您想要设计的年利率:
      (2000,3,klp) 请输入您想要设计的年利率: 出错。数据异常 已改进。弹出提示:请输入您想要设计的年利率:

    计算本金

    (终值,年限,利率)

    本金    
    单利:7692.30 (10000,5,0.06) 7692.30  
      (0,4,0.11) 请输入您想要筹到的金额: 没有提示,显示0 已改进。弹出提示:请输入您想要筹到的金额:
      (-5000,4,0.11) 请输入您想要筹到的金额: 显示-3472.22 已改进。弹出提示:请输入您想要筹到的金额:
       (ddd,10,9)  请输入您想要筹到的金额: 显示数据异常 已改进。弹出提示:请输入您想要筹到的金额:
      (500,-2,0.2) 请输入您想要存储金额的时间(年): 显示负数 已改进。弹出提示:请输入您想要存储金额的时间(年):
      (500,hlpo,0.3) 请输入您想要存储金额的时间(年): 数据异常 已改进。弹出提示:请输入您想要存储金额的时间(年):
      (500,2,-2) 请输入您想要设计的年利率: 出现负数 已改进。弹出提示:请输入您想要设计的年利率:
      (500,3,rrhh) 请输入您想要设计的年利率: 数据异常 已改进。弹出提示:请输入您想要设计的年利率:

      (1)判断输入是否正确:

     1 package test;
     2 
     3 
     4 public class A {
     5     boolean test1(int select){
     6 
     7             System.out.println("请问您想要进行单利计算还是复利计算:1.单利 2.复利");
     8             if(select != 1 && select != 2)
     9                 return false;
    10             else
    11                 return true;
    12     
    13     }
    14 }
     1 package test;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import org.junit.Before;
     6 import org.junit.Test;
     7 
     8 public class ATest {
     9     A a1=new A();
    10     @Before
    11     public void setUp() throws Exception {
    12     }
    13 
    14     @Test
    15     public void test() {
    16         
    17         assertTrue (a1.test1(2));
    18     }
    19 
    20 }

      (2)判断数据计算是否正确:

     1 package test;
     2 
     3 public class E {
     4     public double test5(double sumValue,double rate,int year){
     5         for (int i = 1; i <= year; i++) {
     6             sumValue = sumValue / (1 + rate);
     7 
     8         }
     9         double originalMoney = sumValue;
    10         System.out.println("需要本金" + originalMoney + "元");
    11         return originalMoney;
    12     }
    13 
    14 }
     1 package test;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import org.junit.Before;
     6 import org.junit.Test;
     7 
     8 public class ETest {
     9     E e1=new E();
    10     @Before
    11     public void setUp() throws Exception {
    12     }
    13 
    14     @Test
    15     public void test() {
    16         assertEquals(86383.76,e1.test5(100000, 0.05, 3),0.05);
    17     }
    18 
    19 }

    其余测试代码详情请点击:https://github.com/rongjielong/rongjielong/tree/master/calculate/src/test

    测试总结:

         第一次用到Junit测试,虽然不是很了解,但是也体会到它的好处。Junit里面提供了比较多的方法,需要我们逐一揣摩。通过单元测试,我发现自己原来写的代码比较乱,没什么条理,原来的代码是将整个程序写在一个方法里,测试起来很不方便,怪不得提倡要分开java类以及提取方法的方式开发软件了,所以我在测试过程中拆分了自己原来的代码,分成了几个类以及几个方法,逐一测试。并且,在测试过程中,发现程序会发生异常,例如,int year;当我们输入浮点型数据或者英文字母或者其他的非整形数据,那么我们的实际结果就与预期结果不一致,从而引发错误。因此,单元测试的确是一个自我发现bug的好方法。

  • 相关阅读:
    World Cup
    Eva's Problem
    Number-guessing Game
    WisKey的眼神
    Vowel Counting
    The 3n + 1 problem
    超级楼梯
    母牛的故事
    素数回文
    画8
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/5331079.html
Copyright © 2011-2022 走看看