2016-08-31 2 views
0

나는 PokerHand 클래스를 만들고 JUnit 테스트를 사용하여이를 테스트하고 있는데, 하나의 PokerHand 객체를 만들 때 하나의 테스트 메소드에서 호출 할 때 내 생성자가 8 번 호출된다.Java 생성자가 여러 번 호출 중임

//Constructor 
public PokerHand (Card cardOne, Card cardTwo, Card cardThree, Card cardFour, Card cardFive) { 
    System.out.println("creating hand..."); 
    //Initialize value array 
    value = new int[6]; 
    //Initialize cards list, add cards, and check for duplicates 
    cards = new ArrayList<Card>(); 

    cards.add(cardOne); 
    if (cards.contains(cardTwo)) { 
     throw new DuplicateCardException(); 
    } else cards.add(cardTwo); 
    if (cards.contains(cardThree)) { 
     throw new DuplicateCardException(); 
    } else cards.add(cardThree); 
    if (cards.contains(cardFour)) { 
     throw new DuplicateCardException(); 
    } else cards.add(cardFour); 
    if (cards.contains(cardFive)) { 
     throw new DuplicateCardException(); 
    } else cards.add(cardFive); 

    determineValueOfHand(); 
} 

테스트 케이스 :

에 pokerhand 생성자 (가 호출되고 있었다 얼마나 많은 시간을 볼 수있는 인쇄 문, 인쇄 8 별도의 시간을 추가) 내가 쳐다 봤는데

@Test 
    public void testFlush() { 
     PokerHand a = new PokerHand(D10, DJ, DQ, DK, DA); 
    } 

잠깐 동안의 스크린과 나는 JUnit 테스트와 일식에 익숙하지 않아, 나는 단지 작은 세부 사항을 놓치고 있다고 확신한다. 어떤 도움을 크게

+0

테스트 수업에 다른 어떤 것이 있습니까? 예를 들어, 'D10'이 여기에 선언되지 않았으므로 다른 것이어야합니다. – Brick

+0

테스트를 포함하는 클래스의 전체 코드를 제공 할 수 있습니까? –

+0

@Brick 나는 테스트 클래스에서 52 개의 개별 Card 객체를 만들었습니다. – Lanre

답변

1

의견에 따라 문제를 해결 힌트를 감사 : 아마 당신의 방법을 determineValueOfHand()를 잘못 다른에 pokerhand의 개체를 만듭니다.

해당 사항을 확인하려면 다음을 확인하십시오. 나는

  1. 생성자
  2. 당신의 테스트 케이스

이 객체 참조를 사용하여 S()에 println 않는 것이 좋습니다. 그 외에도 입구/출구 흔적을 ctor에 넣을 수 있습니다! 따라서 생성자 호출 순서가 더 명확합니다.

+0

또는 생성자에 중단 점을 넣고 중단 될 때 * 디버거 *에서 호출 스택을 확인하십시오. – Andreas