进行Junit测试,遇到问题。
我有一辆超级车,摩托车和汽车的子类。我需要使用超类中的方法来检索子类中的信息(字符串ID,int arrival)
public class MotorCycle extends Vehicle {
public String bikeID;
public int arrivalTimeA;
public MotorCycle(String vehID, int arrivalTime) throws VehicleException {
super(bikeID, arrivalTimeA);
bikeID = vehID;
arrivalTimeA = arrivalTime;
我正在使用哪个子类,我想使用超类车辆中的方法从摩托车中检索信息
public Vehicle(String vehID,int arrivalTime) throws VehicleException {
vehicleID = vehID;
arrivalTimeA = arrivalTime;
if (arrivalTime <=0){
throw new VehicleException("Vehicle");
}
public String getVehID() {
return vehicleID;
}
尝试在子类中使用super(vehID,arrivalTime),但我必须将变量设为静态,这对此程序没有好处。
每当我添加super(vehID,arrivalTime)时,我不断收到错误说“Make variables static”,如果我不这样做,它就会无法正常运行并失败。
我的测试内容是:
@Test
public void testGetVehID() throws VehicleException {
moto = new MotorCycle("b1234", 600);
veh = moto;
String id = veh.getVehID();
assertEquals("b1234", id);// TODO
}
veh只是一个空的Vehicle类对象。
我在访问信息时遇到问题。每次运行此测试或类似的测试时,对于int,值为0,对于字符串
,该值为null答案 0 :(得分:0)
我认为你想使用构造函数来传递信息而不是方法。 如果你通过这里 {super(vehid,arrivalTime);}
到您的父类,然后它可能会解决您的问题 如果它适合你,请告诉我你。
答案 1 :(得分:0)
我能想到为什么你得到那条指令的唯一原因是,如果你一直试图从子类的构造函数中调用超类的构造函数,那么它不是第一次调用。只要在它之前没有任何代码,使用构造函数的参数调用super()应该很容易。