Cartrader程序JUnit报错:Vehicle类byte类型无PASSENGER_CAR字段
解决JUnit测试中"基本类型byte没有字段PASSENGER_CAR"的问题
嘿,我来帮你搞定这个头疼的JUnit错误!
错误根源分析
你遇到的错误提示指向了一个很典型的低级失误:byte是Java的基本数据类型,它根本没有PASSENGER_CAR这个静态字段。直接写常量值7或5能运行,是因为测试代码原本期望用这些值标识车辆类型,但你错误地把常量的归属类写成了byte,而非你的Vehicle类。另外从你给出的Vehicle类片段来看,你只定义了油箱大小的常量,缺少了车辆类型对应的byte常量定义,这也是测试找不到字段的核心原因。
分步解决方案
在
Vehicle类中补充车辆类型常量
把测试要求的PASSENGER_CAR和对应类型的TRUCK常量(byte类型)添加到Vehicle类里,示例如下:public class Vehicle { // 新增车辆类型标识常量,值对应测试里要求的5或7 public static final byte PASSENGER_CAR = 5; public static final byte TRUCK = 7; public static final float TANK_SIZE_PASSENGER_CAR = 40.f; public static final float TANK_SIZE_TRUCK = 80.f; private float fuel; // 你的其他类代码... }修正JUnit测试中的常量引用方式
找到测试代码里写byte.PASSENGER_CAR的地方,把它改成Vehicle.PASSENGER_CAR——这样就会正确引用你在Vehicle类中定义的静态常量,而非错误地去基本类型byte里找不存在的字段。
额外提醒
课堂要求不能直接写魔法值(比如5、7)完全合理,这种写法会让代码可读性和可维护性大打折扣。通过定义有意义的静态常量,既能满足规范要求,也能让代码逻辑更清晰。
内容的提问来源于stack exchange,提问作者Robin Pe
相关产品推荐
相关产品推荐

