蓝桥杯单元测试模拟1期模拟题答案及代码解析

文章目录

一、单元测试题目

【题目描述】

请使用 基本路径法 为被测源代码 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;
	}
	
}

三、测试运行截图

相关推荐
祁白_3 小时前
无字母数字 Webshell 绕过
笔记·web安全·测试·ctf
AdCj33 小时前
放弃第三方框架,用系统自带工具玩转 Shell 测试
shell·测试
handler014 小时前
滑动窗口(同向双指针)算法:模板与例题解析
c语言·c++·笔记·算法·蓝桥杯·双指针·滑动窗口
2301_800895105 小时前
蓝桥杯第十二届b组国赛真题--备战国赛版h
算法·蓝桥杯
QH139292318801 天前
思仪 Ceyear 5256C 5G 终端综合测试仪
单片机·单元测试·集成测试·嵌入式实时数据库
技术落地手记2 天前
把AI塞进测试环节,我踩出了一条能用的路
人工智能·测试
2301_800895102 天前
第十四届蓝桥杯国赛b组真题---备战国赛版h
算法·蓝桥杯·深度优先
大飞记Python2 天前
从“驱动地狱”到一行代码:WebDriverManager使用手记(附模板)
python·测试
WL_Aurora2 天前
备战蓝桥杯国赛【Day 12】
python·蓝桥杯
汽车仪器仪表相关领域2 天前
Debron OVM 1052 光学关门速度仪:汽车门盖检测的高精度便携工具 + 生产线适配 + 耐久性监测,整车制造与质量控制的黄金标准
人工智能·功能测试·单元测试·汽车·制造·可用性测试