211606349 蔡晨旸 211606369 蔺皓雯
一.单元测试
- 需求分析
- 要求熟悉对插件Junit,eclemma,以及PMD的使用
- 测试要求
- Junit测试代码编写命名规范
- Junit自动生成测试类的命名如下:被测试的业务+Test、被测试的接口+Test、被测试的类+Test
- 类的名字必须由大写字母开头而单词中的其他字母均为小写;
- 若需要测试业务MobileBind ,那么命名就是TestMobileBind
- 若需要测试接口GetMobileBind ,那么命名就是TestGetMobileBind
- 若需要测试类SetMobileBind.class,那么命名就是TestSetMobileBind
- 写出测试类代码,将结构优化,运行单元测试。
- 提高代码的模块化程度,方便写出测试类代码,使得代码可以执行。
- 将结构优化重构,使得代码去繁从简,提高运行效率。
关键代码
private static void Exam(int range,int grade) throws Exception {
int i,n;
for( i = 0;i < range;i++) {
n=5+(int)(Math.random()*3);
if(n%2 == 0)
n++;
Character[] infixExpression = new Character[n];
char[] str = new char[(n-1)/2];
//操作符数
char c ;
infixExpression[n-1] = c = Operator[(int)(Math.random()*4)];
for(int j = 1,k = n-2;j<(n-1)/2;j++,k--) {
infixExpression[k] = Operator[(int)(Math.random()*4)];
c ^= infixExpression[k].charValue();
}
if(c == 0) {
int q = (int)(Math.random()*4);
infixExpression[n-1] = Operator[q] != infixExpression[n-1].charValue() ? Operator[q] : Operator[(q+1)%4];
}
try {
Topic[i].append("(" + (i+1) + ")");
Answer[i].append("(" + (i+1) + ")");
int result= CalPoland(infixExpression,i,str);
Topic[i].append(System.lineSeparator());
Answer[i].append(" = " + result);
if(i != range - 1){
Answer[i].append(System.lineSeparator());
}
}
catch (Exception e) {
// 抛出异常
Topic[i].setLength(0);
Answer[i].setLength(0);
i--;
}
}
}
- 首先之前代码的很多问题没有得到解决,关于加括号的问题一直没想明白,而这次的测试代码也总是报错。
二、结构优化(重构)
- 常遇到的几种问题:大量的传参: 一些方法跟另一些方法进行交互,或者调用另一些方法的时候传入大量的参数。
- 经常会使用一些具有明确含义的常量值,但没有给它们赋予合适的常量变量。
UML类图
流程图
三、性能调优
- 看完视频,仿照视频中的方法撰写代码,产生了许多错误。经过多次修改,方法依旧有误。知道这个是不正确的,故还在摸索正确的结果。