2013-09-05 2 views
0

Java로 데이터 구조를 연구 중입니다. 가방 구현을 만들어야합니다. String [] 배열을 사용하여이를 수행하고 JUnit에서 결과를 테스트합니다.문자열 배열 String []에 요소 추가 및 Junit의 결과 테스트

내 클래스입니다 :

public class BagImplementation { 

    private int num = 4; 
    private String[] thisBag = new String[num]; 
    private int count =0; 

    public int getCount(){ 
     return count; 
    } 

    public int getCurrentSize() { 
     return num; 
    } 
     public boolean add(String newEntry) { 
     if(getCurrentSize() >= count){ 
      thisBag[count] = newEntry; 
      count++; 
      return true; 
     }else{ 
      count++; 
      System.out.println("reaching"); 
      return false; 
     } 
    } 
} 

내 JUnit 테스트 클래스는 다음과 같습니다

import static org.junit.Assert.*; 
import org.junit.Test; 

public class BagImplementationTest { 

    @Test 
    public void test() { 
     BagImplementation thisBag = new BagImplementation(); 
     String input1 = "hi"; 
     Boolean added1 = thisBag.add(input1); 
     assertEquals(true, added1); 

     String input2 = "hi"; 
     Boolean added2 = thisBag.add(input2); 
     assertEquals(true, added2); 

     String input3 = "hi"; 
     Boolean added3 = thisBag.add(input3); 
     System.out.println(thisBag.getCount()); 
     assertEquals(true, added3); 

     String input4 = "hi"; 
     Boolean added4 = thisBag.add(input4); 
     assertEquals(true, added4); 

     String input5 = "hi"; 
     Boolean added5 = thisBag.add(input5); 
     System.out.println(thisBag.getCount()); 
     System.out.println(added5); 
     assertEquals(false, added5); 

    } 

} 

JUnit 테스트는 처음 네 테스트를 충족해야하고, 다섯 번째는 거짓이기 때문에 통과 할 예정이다. 그러나 마지막 테스트에서 내 테스트가 실패합니다. 또한 print 문 (System.out.println (added5) 및 assertEquals (false, added5);)은 아무 것도 인쇄하지 않습니다. 테스트 클래스가 added5의 값을 읽지 않는 것처럼 보입니다.이 작은 코드를 여러 번 디버그하여 성공하지 못했습니다. 어떤 도움을 주시겠습니까?

참고 : 매개 변수 num을 5로 설정하고 마지막 어설 션을 "assertEquals (true, added5)"로 설정하면 테스트가 통과합니다. 당신의 add 기능에

답변

2

, 당신이 가지고있는 경우 조건 다음

if (getCurrentSize() >= count) { 
count 원래 0입니다

getCurrentSize()num의 값을 (4 인)을 반환합니다. 문제는 다섯 번째 시간을 삽입 할 때 count이 4이고이 문장이 true로 평가된다는 것입니다. 당신이 다섯 번째 시간을 실패 할 경우 5num을 변경하면

을 (count 4 인 경우는 false로 평가되는 것이다 있도록), 당신은 (원래 문장이 참 대신 >=> 필요 5 >= 4부터) 다섯 번째 삽입이 성공합니다.

사이드 참고 :는 다섯 번째를 삽입하려고로 (num4 때) 것 같이 add 기능은 바로 IndexOutOfBoundsException을 던지는되어야한다. 이 문제는 (어레이 끝에서 하나 인 thisBag[num])에 추가하려고하지 않으므로이 문제도 해결됩니다. 다시 num을 5로 변경하면 배열이 충분히 크며이 예외가 발생하지 않습니다.

관련 문제