单元测试
211606350曾磊鑫 211606364李冠锐
1.设计思路
- 针对MathExam的三个方法,设计三个测试方法;
- 每个测试方法都将每个方法要测试的年级、题目传入MathExam.main()方法中,并将是否运行正常的值返回,看与预期是否一样。
2.部分单元测试代码
@Test
public void testMathExamTwo() throws Exception {
String[] input = new String[] {"-n", "10", "-grade", "2"};
MathExam.main(input);
assertEquals(true,MathExam.out_boolean());
在这个测试方法中,我们向被测试类传了“-n 10 -grade 2”,通过assertEquals(true,MathExam.out_boolean()); 可以知道是否通过测试,若MathExam能正常运行,则会运行MathExam.out_boolean()方法,并返回true,与预期的true相符合,测试类通过。
3.遇到的问题
if (args1[0].equals("-n")) {
n = Integer.parseInt(args1[1]);
grade = Integer.parseInt(args1[3]);
}
在上述判断中,最开始一直在想为什么“args[0]=="-n"”一直不能判断,后来才想起是需要String.equals()这个方法才能判断。
3.单元测试覆盖率
4.结构优化
5.流程图
6.性能调优
调优前:
性能瓶颈:
真的不知道要怎么改才能提高性能。只能讲繁琐的将txt输出到屏幕这段代码删除
调优后:
7.重构
- MathExam类里的MathExam(str)方法:
- 在产生三年级的题目里,调用这个重构方法,将中缀式子以“+-×÷”作为分隔符存入ArrayList类型的list中。
-