博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业3-单元测试
阅读量:4586 次
发布时间:2019-06-09

本文共 3203 字,大约阅读时间需要 10 分钟。

一、单元测试


1.设计思路

  • 固定返回值的函数通过对比与预期结果是否一致进行测试判断

  • 随机返回值的函数通过对比是否在预期结果范围内进行测试判断
  • 调度场算法通过函数异常中转进行测试判断

2.部分代码

import static org.junit.Assert.*;import org.junit.Test;public class ParameterTest {    @Test    // 测试 -n 数量 -Grade 年级    public void DealDataOne() {        String[] args = {"-n","10","-Grade","3"};        //测试boolean        assertTrue(new Parameter(args).DealData(args));    }    @Test    // 测试 -Grade 年级 -n 数量    public void DealDataTwo() {        String[] args = {"-Grade","10","-n","3"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试 n 错误    public void DealDataThree() {        String[] args = {"n","10","-Grade","3"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试参数数量错误    public void DealDataFour() {        String[] args = {"-n","10","-Grade"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试 Grade 错误    public void DealDataFive() {        String[] args = {"-n","10","-Grade","10"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试格式错误    public void DealDataSix() {        String[] args = {"n","10","-Grade","3"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试格式错误    public void DealDataSeven() {        String[] args = {"-Grade","3","n","10"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试不为纯数字    public void DealDataEight() {        String[] args = {"-Grade","3AA","-n","10"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    // 测试不为纯数字    public void DealDataNine() {        String[] args = {"-Grade","3","-n","AAA"};        //测试boolean        assertTrue(new Parameter(args).DealData(args) == false);    }    @Test    public void GetNumber() {        String[] args = {"-n","10","-Grade","3"};        //测试boolean,long,int等        assertEquals(10, new Parameter(args).GetNumber());    }    @Test    public void GetGradeOne() {        String[] args = {"-n","10","-Grade","3"};        //测试boolean,long,int等        assertEquals(3, new Parameter(args).GetGrade());    }    @Test    public void GetGradeTwo() {        String[] args = {"-n","10","-Grade","4"};        //测试boolean,long,int等        assertEquals(0, new Parameter(args).GetGrade());    }    @Test    // 测试纯数字    public void isNumOne() {        String[] args = {"-n","10","-Grade","3"};        assertTrue(new Parameter(args).isNum("123"));    }    @Test    // 测试非纯数字    public void isNumTwo() {        String[] args = {"-n","10","-Grade","3"};        assertTrue(new Parameter(args).isNum("777A") == false);    }}

3.测试覆盖率

二、结构优化


1.UML类图

avatar

2.运行流程图

avatar

3.代码重构

(1)重构部分

  • 题目生成
  • 参数处理

(2)重构原因

  • 便于单元测试
  • 代码模块化
  • 增加代码耦合度

(3)当前模块功能

  • MathExam为主类,用于接收参数
  • File为文件类,用于写出文件
  • Parameter为参数处理类,用于检查接收到的参数是否合格并进行处理
  • ShuntingYard为调度场算法类,用于实现调度场算法,计算表达式结果
  • TaskMake为题目生成类,用于随机生成题目

三、性能调优


1.优化前效能分析

avatar

2.性能瓶颈

  • String.toArray()方法处理效率较低

3.解决方案

  • 使用String.charAt(index)方法替代

4.优化后效能分析

avatar

四、总结


  • 同类功能的函数应该封装到同一个类中

  • 多次使用的方法封装为函数,减少代码量,且代码美观

转载于:https://www.cnblogs.com/IMRIVER/p/9727102.html

你可能感兴趣的文章
bug解决思路
查看>>
Oracle没有WM_CONCAT函数的解决办法
查看>>
消息中间件——RabbitMQ(四)命令行与管控台的基本操作!
查看>>
Eclipse 写代码是自动重启服务
查看>>
3.8 spring - AbstractBeanDefinition 介绍
查看>>
如何在Visual Studio里面查看程序的汇编代码?
查看>>
解决IE11只能用管理员身份运行的问题
查看>>
android学习-LocationManager(一)-
查看>>
Linux安装单机solr
查看>>
dos alias/cname address
查看>>
cygwin下用arm-xscale-linux-gnueabi交叉编译libcgi
查看>>
从开始学编程过了半年了……
查看>>
【05月22日】预分红股息率最高排名
查看>>
Android学习总结(二)——Service基本概念和生命周期
查看>>
chr()//ord() //进制转换函数//eval()//文件函数//split()
查看>>
第一章 Java程序设计概述
查看>>
定时调动 (项目保留备份代码码)
查看>>
Leetcode-Divide Two Integers
查看>>
HTML 首页倒三角形导航块
查看>>
每天一道Java题[9]
查看>>