2014-07-25 2 views
0

JUnit 테스트를 작성하여 즐겨 찾기 목록에 버스 정류장을 추가하는 메소드를 테스트합니다. 중지가 null이 아니거나 중지가 목록에없는 경우에만 중지를 목록에 추가해야합니다. 이것은 내가 그것을 가지고 방법 :개체가 null인지 내 메서드가 제대로 감지하지 못하는 이유는 무엇입니까?

public boolean addStop(BusStop stop) { 
    if (stop == null || stops.contains(stop)) { 
     return false; 
    else { 
     stops.add(stop); 
     return true; 
} 

이 내 JUnit 테스트입니다 :

public void testAddStop() { 
    stops.add(stop1); 
    stops.add(stop2); 
    stops.add(stop3); 
    stops.add(stop4); // Stops 1-4 are not null 
    assertEquals(stops.size(), 4); 
    stop5 = null; 
    stops.add(stop5); // Stop 5 is null 
    assertEquals(stops.size(), 4); 
} 

수는 5를 기대 말, 두 번째 assertEquals가 실패 테스트를 실행하지만, 4. 사실이었다 아무도 여기서 내가 잘못 가고있는 것을 지적하지?

+0

디버깅에는 입력, 프로세스 및 출력이라는 세 가지 측면이 있습니다. 당신은 우리에게 과정과 결과를 주었지만, 우리는 입력을 추측했습니다. –

+4

'addStop (stop5) '를 호출하는 대신 직접'stops.add (stop5)'를 사용하고 있기 때문에 – gtgaxiola

+0

유닛 테스트가 내부 데이터 구조'stop'에 어떻게 접근 할 수 있습니까? – isnot2bad

답변

3

먼저 JUnit "assert"메소드 호출에서 예상 값이 먼저 나온 다음 테스트 값이됩니다. assertEquals(4, stops.size())을 사용하십시오. 예상 된 4는 5였습니다.

두 번째로 addStop 메서드가 아닌 stops.add(stop5)을 호출하기 때문에 null이 추가됩니다. test 메소드가 실제로 addStop을 호출했는지 확인하십시오.

+0

웁스! 고마워요! – tigfra

관련 문제