当前位置: 首页 > news >正文

蓝桥杯4期模拟单元测试解析

单元测试题目:判定覆盖法设计测试用例(蓝桥杯练习)

题目描述

请使用判定(分支)覆盖法为被测源代码LiftTicket类中的fareCalculation()方法设计单元测试用例,并在LiftTicketTest类中完成单元测试代码。

基本路径法(又称独立路径测试)是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。本题要求使用判定覆盖法。

源代码功能

景区为吸引游客,推出缆车乘车费用优惠政策,规则如下:

  • 乘坐缆车原价为100 元
  • 系统首先检查用户的消费金额是否大于 0(本题未涉及消费金额检查,实际代码中无此逻辑,以给定代码为准)。
  • 旺季(1、2、6、7、8、12月):原价打8 折
    • 学生:再打7 折→ 最终56 元
    • 教师:再打8 折→ 最终64 元
    • 其他:无额外折扣 → 最终80 元
  • 淡季(3、4、5、9、10、11月):原价打6 折
    • 学生:再打7 折→ 最终42 元
    • 教师:再打8 折→ 最终48 元
    • 其他:无额外折扣 → 最终60 元
  • 若月份不是 1~12 月,则返回“月份异常”

题目要求

  1. 使用判定(分支)覆盖法设计7 条测试用例,使被测代码的判定覆盖率达到 100%。
  2. 使用 Java 单元测试框架JUnit编写测试代码。
  3. 测试代码写在提供的LiftTicketTest.java类中。
  4. 断言Assert类必须使用org.junit包中的Assert
  5. 不要修改所提供的文件名称和已有代码。

被测源代码

packagecn.lanqiao;importjava.text.DecimalFormat;publicclassLiftTicket{/** * 根据月份和游客身份计算出缆车乘车费用 * @param month 月份 * @param identity 身份 * @return 最终票价 */publicStringfareCalculation(intmonth,Stringidentity){doubleprice=100;if(month==1||month==2||month==6||month==7||month==8||month==12){if(identity.equals("学生")){price=price*0.8*0.7;}elseif(identity.equals("教师")){price=price*0.8*0.8;}else{price=price*0.8;}returnDecimalFormat.getIntegerInstance().format(price);}elseif(month==3||month==4||month==5||month==9||month==10||month==11){if(identity.equals("学生")){price=price*0.6*0.7;}elseif(identity.equals("教师")){price=price*0.6*0.8;}else{price=price*0.6;}returnDecimalFormat.getIntegerInstance().format(price);}else{return"月份异常";}}}

测试类代码(LiftTicketTest.java)

packagecn.lanqiao.unit;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importorg.junit.Assert;// 注意:必须使用 org.junit.Assertimportcn.lanqiao.LiftTicket;publicclassLiftTicketTest{privateLiftTicketticket;@BeforepublicvoidsetUp(){ticket=newLiftTicket();}@AfterpublicvoidtearDown(){ticket=null;}// 旺季 - 学生@TestpublicvoidtestFareCalculation01(){Assert.assertEquals("56",ticket.fareCalculation(7,"学生"));}// 旺季 - 教师@TestpublicvoidtestFareCalculation02(){Assert.assertEquals("64",ticket.fareCalculation(7,"教师"));}// 旺季 - 其他@TestpublicvoidtestFareCalculation03(){Assert.assertEquals("80",ticket.fareCalculation(7,"其他"));}// 淡季 - 其他@TestpublicvoidtestFareCalculation04(){Assert.assertEquals("60",ticket.fareCalculation(3,"其他"));}// 淡季 - 学生@TestpublicvoidtestFareCalculation05(){Assert.assertEquals("42",ticket.fareCalculation(3,"学生"));}// 淡季 - 教师@TestpublicvoidtestFareCalculation06(){Assert.assertEquals("48",ticket.fareCalculation(3,"教师"));}// 无效月份@TestpublicvoidtestFareCalculation07(){Assert.assertEquals("月份异常",ticket.fareCalculation(13,"教师"));}}

判定覆盖分析

测试用例月份身份预期结果覆盖的判定
017(旺季)学生“56”旺季真,学生判定真
027(旺季)教师“64”旺季真,学生假,教师真
037(旺季)其他“80”旺季真,学生假,教师假
043(淡季)其他“60”旺季假,淡季真,内层学生假、教师假
053(淡季)学生“42”旺季假,淡季真,内层学生真
063(淡季)教师“48”旺季假,淡季真,内层学生假、教师真
0713(无效)教师“月份异常”旺季假,淡季假(进入else分支)

结论:7 条用例使所有判定(外层月份分支、内层身份分支)均取到真和假,判定覆盖率达到 100%。

注意事项

  • 断言必须使用org.junit.Assert,不能使用junit.framework.Assert
  • 测试类文件应放在正确的包路径下(如test/cn/lanqiao/unit)。
  • 不要修改被测类的任何代码。

总结

本题通过判定覆盖法设计了 7 个测试用例,完整覆盖了旺季/淡季/异常月份以及学生/教师/其他身份的所有分支,符合题目要求的 100% 判定覆盖率。

http://www.jsqmd.com/news/622495/

相关文章:

  • 从零开始:在星图平台用Clawdbot连接飞书与Qwen3-VL
  • 2026年英文论文AIGC检测不通过?5款降AI工具横评哪个最值
  • MMD Ray渲染进阶:材质与灯光的艺术搭配
  • 天津考驾照不踩坑且能开发票的驾校有哪些? - 工业设备
  • 2026支持NFC无感解锁的外卖电瓶车品牌推荐 - 品牌排行榜
  • GEBCO_2025全球地形格网数据集
  • GHelper终极指南:5分钟解锁华硕笔记本隐藏性能,告别官方臃肿软件
  • 3步配置智慧树自动学习插件:告别手动刷课,效率提升150%
  • 特斯拉Autopilot和Apollo对比:开源vs闭源的自动驾驶方案选型指南
  • Vibe Coding:用“氛围感”重塑编程
  • 2026年SCI三四区AI率超30%怎么办?3招搞定不影响学术表达
  • 天津河西区做一站式整装的装修公司哪个口碑好 - 工业品网
  • vue3组件间通信方式
  • 永嘉原厂超抗干扰/抗静电LCD驱动IC超小封装段码液晶屏驱动芯片VK2C21AQ QFN28/DICE/COG
  • MongoDB为什么会选错索引_查询优化器计划缓存(Plan Cache)清理
  • 一个免费、轻量的 Typora 图床方案:Cloudflare R2 + Python——十分钟完成
  • 基于Verilog的以太网PHY芯片MDIO寄存器自动化测试方案
  • 最佳复古游戏体验设置
  • .NET 诊断技巧 | 日志框架原理、手写日志框架学习蒂
  • live-plugin-manager nodejs 插件框架
  • .NET源码生成器基于partial范式开发和nuget打包衷
  • 基于django外语学习系统
  • VMware macOS虚拟机终极解锁指南:如何3分钟启用苹果系统支持
  • Z-Image-Turbo-辉夜巫女效果展示:高还原度巫女形象+细腻光影+日式构图
  • PDF提取不求人:MinerU镜像开箱即用,支持GPU加速
  • 盘点类似问卷星的软件有哪些:题型丰富度+样本服务(防坑必看) - 品牌排行榜
  • 【Verilog】阻塞/非阻塞赋值
  • 记一次综合型流量分析 | 添柴不加火拦
  • **Pandas实战进阶:用DataFrame的“变形术”解锁数据清洗与分析新姿势**在数
  • 告别马赛克!用PyTorch和ESRGAN亲手复活你的老照片(附完整代码与数据集处理技巧)