对我们和复利计算程序,写单元测试。
有哪些场景?
期待的返回值
写测试程序。
运行测试。
测试部分:
1 // 1.复利计算终值 2 static float CFutureValue() { 3 Scanner fuli = new Scanner(System.in); 4 System.out.println("请输入本金:"); 5 double PresentValue = fuli.nextDouble(); // 本金 6 System.out.println("请输入存款年数:"); 7 int year = fuli.nextInt(); // 存钱年数 8 System.out.println("请输入利率:"); 9 double r = fuli.nextDouble(); // 利率 10 double FutureValue = 1; 11 12 for (int i = 1; i <= year; i++) { 13 FutureValue = (1 + r) * FutureValue; 14 15 } 16 float f=(float) (Math.round(FutureValue * PresentValue * 100)) / 100; 17 System.out.println("总额为:"+ f); 18 return f; 19 } 20 21 22 // 2.复利计算本金 23 static void CPresentValue() { 24 Scanner fuli = new Scanner(System.in); 25 System.out.println("请输入终值:"); 26 double FutureValue = fuli.nextDouble(); // 复利终值 27 System.out.println("请输入存款年数:"); 28 int year = fuli.nextInt(); // 存钱年数 29 System.out.println("请输入利率:"); 30 double r = fuli.nextDouble(); // 利率 31 double PresentValue = 1; 32 for (int i = 1; i <= year; i++) { 33 PresentValue = (1 + r) * PresentValue; 34 } 35 float f=(float) (Math.round(FutureValue * (1 / PresentValue) * 100))/ 100; 36 System.out.println("总额为:"+ f); 37 }
测试的代码:
1 @Test 2 public void test() {//测试"复利计算终值"公式是否正确,计算结果与预想结果误差是否大于1 3 double PresentValue=1000000.0; 4 int year=30; 5 double r=0.03; 6 double FutureValue = 1; 7 for (int i = 1; i <= year; i++) { 8 FutureValue = (1 + r) * FutureValue; 9 10 } 11 float F=(float) (Math.round(FutureValue * PresentValue * 100)) / 100; 12 Assert.assertEquals(F, 2427262,1.0);//计算结果与预想结果误差是否大于1 13 } 14 15 @Test 16 public void test2() {//测试计算"复利计算本金"公式是否正确,计算结果与预想结果误差是否大于1 17 double FutureValue=3000000.0; 18 int year=10; 19 double r=0.03; 20 double PresentValue = 1; 21 for (int i = 1; i <= year; i++) { 22 PresentValue = (1 + r) * PresentValue; 23 } 24 float f=(float) (Math.round(FutureValue * (1 / PresentValue) * 100))/ 100; 25 Assert.assertEquals(f, 2232281,1.0);//计算结果与预想结果误差是否大于1 26 }
这次做的单元只是测试了两个公式是否错误和计算结果与预期的差距是否在1以内,其他公式的测试以此类推。
其实发现自己代码bug挺多的,基础比较差,很多bug都不会修复,所以先测试最简单的部分,等后期比较完善后再测试一些其他内容。