• 复利计算器单元测试


    针对复利计算器的单元测试程序

    单元测试场景:

      1.测试计算公式是否正确

      2.测试用户输入非法字符

      3.测试输入为空

      4.测试输入字符串长度为0

      5.测试输入为负数

    详细源程序:https://github.com/425221830/CompoundInterestCalculator

    单元测试代码

    package pers.xisven.test;
    
    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    import pers.xisven.cic.Calculate;
    
    public class CalculateTest {
        String p = "10000";//P:本金
        String i = "0.030";//I:利率
        String n = "30";//N:存入年限
        String c = "1";//C: 年复利次数
        String f = "0";//F:复利终值
    
        @Test
        //测试求复利公式
        public void testCalculateCompoundInterest() {
            assertEquals(new Calculate(p, i, n, c, f).calculateCompoundInterest(), "24272.6247");
        }
        @Test
        //测试求单利公式
        public void testCalculateSimpleInterest() {
            assertEquals(new Calculate(p, i, n, c, f).calculateSimpleInterest(), "19000.0000");
        }
        @Test
        //测试求利率
        public void testCalculateI() {
            assertEquals(new Calculate("1000", null, "5", "1", "1200").calculateI(), ".0371");
        }
        @Test
        //测试求本金
        public void testCalculatePrincipal() {
            assertEquals(new Calculate(null, "0.03", "10", "1", "50000").calculatePrincipal(), "37204.6957");
        }
        @Test
        //测试求时间公式
        public void testCalculateYears() {
            assertEquals(new Calculate("30000", "0.03", null, "1", "50000").calculateYears(), "18");
        }
        @Test
        //测试求回报公式
        public void testCalculateInvestment() {
            assertEquals(new Calculate("20000", "0.025", "10", null, null).calculateInvestment(), "229669.3262");
        }
        @Test
        //测试求还款公式
        public void testCalculateRepayment() {
            assertEquals(new Calculate("1000000", "0.0325", "10", null, null).calculateRepayment(), "9771.9029");
        }
        @Test
        //测试输入非法字符
        public void testCalculateinput() {
            p = "adff";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        public void testCalculateinput2() {
            i = "1.2";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        public void testCalculateinput3() {
            n = "10.5";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        public void testCalculateinput4() {
            c = "1.5";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        //测试输入为负数
        public void testCalculateinput5() {
            p = "-1000";
            assertTrue(new Calculate(p, i, n, c, f).isError());
        }
        @Test
        //测试输入为空
        public void testCalculateCompoundInterest3() {
            p = null;
            assertTrue(new Calculate(p, i, n, c, f).getPrincipal()==0);
        }
        @Test
        //测试字符串长度为0
        public void testCalculateCompoundInterest4() {
            p = "";
            assertTrue(new Calculate(p, i, n, c, f).getPrincipal()==0);
        }    
        
    }
        @Test
        //测试TryCatch
        public void testTryCatch() {
            assertEquals(new Calculate(p, i, n, c, f).testTryCatch(p), false);
        }    

    更新测试TryCatch仅测试一项,其他语句类似

    发现问题:

      在利率计算方法中返回值不完整只能输出“.xxx”而不是“0.xxx”

    原因:

      在保留小数位数时仅考虑到大于1的情况

    改进:

    //求利率返回值修改如下,为保证返回字符串为完整的小数
    return new DecimalFormat("0.0000").format(i);

    改进后

    测试结果均符合预期

    更新为15个测试

    总结:

      编写Calculate类时利用 try {} catch () {} 语句检测错误进行异常处理

      在测试类中利用匿名类调用方法进行判断测试结果

      在测试判断时要注意方法的返回值类型和预期结果的类型相符

      发现在利率计算方法中返回值不完整只能输出“.xxx”而不是“0.xxx”的问题,查询资料学习DecimalFormat()方法的一些用法

  • 相关阅读:
    hibernate各种状态
    Persistence createEntityManagerFactory方法使用
    JS数组学习笔记
    ES6笔记之参数默认值(译)
    JS是按值传递还是按引用传递?
    linux awk命令详解
    Linux Shell笔记之sed
    类似微信红包随机分配js方法
    ionic tabs隐藏完美解决
    mustache 获取json数据内数组对象指定元素的方法
  • 原文地址:https://www.cnblogs.com/xiseven/p/5332476.html
Copyright © 2020-2023  润新知