2014-05-21 3 views
0

Junit 테스트 작업 중 문제가 발생했습니다.수퍼 클래스에 java 서브 클래스 값 전달

나는 차량 수퍼 클래스와 오토바이 및 자동차 하위 클래스가 있습니다. 내가 작업하고있는 서브 클래스, 서브 클래스의 정보 (문자열 ID, INT 도착를)

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; 

검색하는 슈퍼 클래스의 메소드를 사용합니다, 나는 슈퍼 클래스 차량의 방법을 사용하려면 오토바이

서브 클래스에서 슈퍼 (vehID, 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)를 추가 할 때마다 "변수를 정적으로 만드십시오"라는 오류가 계속 발생합니다. 그렇지 않으면 제대로 실행되지 않고 실패합니다. 내 시험이 무엇

은 다음과 같습니다

@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

super (vehID, arrivalTime)에 대해 변수를 정적으로 설정해야하는 이유는 무엇입니까? – Hirak

+0

귀하의 질문은 [this] (http://stackoverflow.com/q/14076730/2764279)와 관련이 있습니다 –

+0

코드는 문제가되지 않습니다. –

답변

0

메서드 대신 정보를 전달하기 위해 생성자를 사용하려고한다고 생각합니다. 다음이 당신을 위해 작동 여부를 경우 문제 나에게 당신을 주시기 바랍니다 해결할 수있는 부모 클래스에

여기에 당신은 {슈퍼 (vehID, arrivalTime를)} 전달하는 경우.

+0

오토바이 생성자에 있습니까? –

+0

네가 맞다 –

+0

그것은 작동하지 않습니다. 변수를 정적으로 만들어야 만 다른 모든 테스트가 실패하게됩니다. –

0

내가 그 명령을받는 이유는 생각할 수있는 유일한 이유는, 당신이 슈퍼 클래스의 생성자를 서브 클래스의 생성자에서 호출하려고 시도했을 때 첫 번째 호출이 아니라는 것입니다. 생성자의 인수로 super()를 호출하는 것은 그 앞에 코드가없는 한 쉽습니다.