单元测试:复利计算

时间:2023-01-09 15:57:31

测试要求:

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

   有哪些场景?

   期待的返回值

   写测试程序。

   运行测试。

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的好方法。