文章目录
- 一、单元测试题目
- 二、代码解析
-
- [2.1 GradeEvaluation类](#2.1 GradeEvaluation类)
- [2.2 GradeEvaluationTest类](#2.2 GradeEvaluationTest类)
- 三、测试运行截图
一、单元测试题目
【题目描述】
请使用 基本路径法 为被测源代码 GradeEvaluation 类中的 evaluateGrade() 方法设计单元测试用例,并在 GradeEvaluationTest.java 类中完成单元测试代码。基本路径法:又称独立路径测试,是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。【源代码功能】
成绩评定系统 GradeEvaluation,是一个根据学生成绩和学生类型来综合评定等级的标准系统,可以帮助教育工作者和学生准确评定学习成绩等级,客观反映学生的学习水平、学习表现。该系统可以按照不同的标准进行分类,对于成绩过高或过低都会进行不合理的提醒。具体规则如下:
成绩评定适用于所有学生,包括本科生和研究生。
若成绩不在 0 - 100 之间,系统会抛异常,传递"成绩异常"的信息。 成绩评定分为两种标准:本科生和研究生
对于普通本科生,评定标准为:
90分及以上:优秀
80分到89分:良好
70分到79分:中等
60分到69分:及格
60分以下:不及格
对于研究生,评定标准提高一级,评定标准为:
95分及以上:优秀
90分到94分:良好
80分到89分:中等
70分到79分:及格
70分以下:不及格
二、代码解析
2.1 GradeEvaluation类
java
package cn.lanqiao;
/**
* 本类主要的功能描述:
* 1. 成绩评定适用于所有学生。
* 2. 成绩评定的范围是0到100分,超出范围会返回提示【成绩异常】。
* 3. 成绩评定标准如下:
* - 90分及以上:优秀
* - 80分到89分:良好
* - 70分到79分:中等
* - 60分到69分:及格
* - 60分以下:不及格
* 4. 如果学生是研究生,成绩评定标准提高一级:
* - 95分及以上:优秀
* - 90分到94分:良好
* - 80分到89分:中等
* - 70分到79分:及格
* - 70分以下:不及格
* 注意:确保当前文件处于 JavaLanqiaoTest\\src\\cn\\lanqiao 目录下
*/
public class GradeEvaluation {
/**
* 根据成绩和学生类型返回评定结果
* @param score 成绩,整数类型
* @param isGraduate 是否是研究生,布尔类型
* @return 评定结果
*/
public String evaluateGrade(int score, boolean isGraduate) {
if (score < 0 || score > 100) {
throw new IllegalArgumentException("成绩异常");
}
if (isGraduate) {
if (score >= 95) {
return "优秀";
} else if (score >= 90) {
return "良好";
} else if (score >= 80) {
return "中等";
} else if (score >= 70) {
return "及格";
} else {
return "不及格";
}
} else {
if (score >= 90) {
return "优秀";
} else if (score >= 80) {
return "良好";
} else if (score >= 70) {
return "中等";
} else if (score >= 60) {
return "及格";
} else {
return "不及格";
}
}
}
}
2.2 GradeEvaluationTest类
java
package cn.lanqiao.unit;
import org.junit.*;
import static org.junit.Assert.*;
import cn.lanqiao.*;
/**
* 完成单元测试用例代码书写,要求如下:
* 1. 请使用基本路径法对被测源代码 GradeEvaluation 类中的 evaluateGrade 方法设计单元测试用例。
* 2. 请在下方 GradeEvaluationTest 类中填写单元测试代码内容。
* 3. 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert。
* 4. 测试用例代码可以写在一个测试方法中,也可以写在多个测试方法中。
*
* 注意:确保当前文件处于 JavaLanqiaoTest\\test\\cn\\lanqiao\\unit 目录下
*/
public class GradeEvaluationTest {
private GradeEvaluation gradeEvaluation;
// 初始实例化被测对象,非考点
@Before
public void setUp() {
gradeEvaluation = new GradeEvaluation();
}
@Test
public void testEvaluateGrade1() {
//TODO 请填写单元测试代码
Assert.assertEquals("不及格", gradeEvaluation.evaluateGrade(60,true ));
Assert.assertEquals("及格", gradeEvaluation.evaluateGrade(70,true ));
Assert.assertEquals("中等", gradeEvaluation.evaluateGrade(80,true ));
Assert.assertEquals("良好", gradeEvaluation.evaluateGrade(90,true ));
Assert.assertEquals("优秀", gradeEvaluation.evaluateGrade(95,true ));
}
@Test
public void testEvaluateGrade2() {
//TODO 请填写单元测试代码
Assert.assertEquals("优秀", gradeEvaluation.evaluateGrade(90, false));
Assert.assertEquals("良好", gradeEvaluation.evaluateGrade(80, false));
Assert.assertEquals("中等", gradeEvaluation.evaluateGrade(70, false));
Assert.assertEquals("及格", gradeEvaluation.evaluateGrade(60, false));
Assert.assertEquals("不及格", gradeEvaluation.evaluateGrade(58, false));
Assert.assertEquals("优秀", gradeEvaluation.evaluateGrade(90, false));
}
@Test(expected = IllegalArgumentException.class)
public void testEvaluateGrade3() {
// 测试成绩超出范围的异常情况
// 超过 100 的成绩
Assert.assertEquals("消费金额异常", gradeEvaluation.evaluateGrade(105, false));
// 小于 0 的成绩
Assert.assertEquals("消费金额异常", gradeEvaluation.evaluateGrade(-5, true));
}
// 释放实例化被测对象,非考点
@After
public void tearDown() {
gradeEvaluation = null;
}
}
三、测试运行截图
