阅读下列说明,回答问题,将解答写在答题纸的对应栏内。 某汽车维修公司的工时计算模块每天定时根据系统登记的维修信息统计维修工的工时工资。维修工分为学徒、普通维修工和高级维修工三种,三种维修工有不同的时薪标准。 图4一1是该模块的类图,图中属性和操作前的“+”

admin2021-03-19  36

问题 阅读下列说明,回答问题,将解答写在答题纸的对应栏内。
某汽车维修公司的工时计算模块每天定时根据系统登记的维修信息统计维修工的工时工资。维修工分为学徒、普通维修工和高级维修工三种,三种维修工有不同的时薪标准。
图4一1是该模块的类图,图中属性和操作前的“+”  “#”和“-”分别表示公有成员、保护成员和私有成员。

其中:
(1)类Engineer表示普通维修工。
(2)类studentEngineer和seniorEngineer都重新实现了类Engineer的方法calReward()。
(3)方法calReward()根据每个维修工每天的工时数(workTime)、时薪(hourSalary)来计算当天的工时工资。
(4)方法getReward()调用方法calReward()获取工时工资并打印显示。
(5)类System中的方法statReward()首先调用了该类的方法load(),获取本系统工程师列表,然后调用了类Engineer中的方法calReward()。
现拟采用面向对象的方法进行测试。
(1)请结合题干说明中的描述,给出测试类Engineer方法calReward0时的测试序列。
(2)请给出图4-1中各个类的测试顺序。

选项

答案(1)new Engineer()一setW01.kTime()calReward()一getReward()。 (2)Engineel一一studentEngineer、seniorEngineer——System。其中studentEngineer、seniorEngineer 的测试顺序可任意设定。

解析 本问题考查面向对象的单元测试。
(1)由题干说明,方法ealReward0根据每个维修工每天的工时数(workTime)、时薪(hourSalary)来计算当天的工时工资,方法getReward()调用方法calReward()获取工时工资并打印显示。因此,测试时需要先生成一个Engineer对象,然后设定工时数setWorkTime(),计算工资calReward(),最后通过获取工资getReward()以判断计算是否正确。对应的测试序列为:
new Engineer()—setWorkTime()—calReward()—getReward()。
(2)由类结构图可以容易看出,类Engineer最先测试,因为测试其他三个类都需要依赖该类的测试结果。而System类的测试要依赖于studentEngineer类和seniorEngineer类的测试结果,所以System类最后测试。而类studentEngineer和类seniorEngineer互相独立,所以这两个类的测试顺序可任意设定。
转载请注明原文地址:https://jikaoti.com/ti/4eB7FFFM
0

随机试题
最新回复(0)