蓝桥杯单元测试模拟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;
	}
	
}

三、测试运行截图

相关推荐
Mr_Xuhhh3 小时前
蓝桥杯复习清单真题(C++版本)
c++·算法·蓝桥杯
yoyobravery4 小时前
蓝桥杯第十二届4t满分
蓝桥杯
念越4 小时前
蓝桥杯自动化测试模拟1期答案及代码解析(完整版)
自动化测试·软件测试·selenium·蓝桥杯
G皮T5 小时前
【OpenClaw】思路转变:从 “传统UI测试” 到 “AI驱动的UI测试”
自动化测试·人工智能·ai·agent·测试·ui测试·openclaw
你撅嘴真丑14 小时前
[蓝桥杯 2025 省 B] 生产车间 与 装修报价
职场和发展·蓝桥杯
Tanecious.15 小时前
蓝桥杯备赛:Day4-P9749 公路
c++·蓝桥杯
Tanecious.16 小时前
蓝桥杯备赛:Day3-P1102 A-B 数对
c++·蓝桥杯
Tanecious.16 小时前
蓝桥杯备赛:Day3-P1918 保龄球
c++·蓝桥杯
Tanecious.21 小时前
蓝桥杯备赛:Day1-P1101 单词方阵
c语言·c++·蓝桥杯