多次调用Java构造函数

时间:2016-08-31 03:27:51

标签: java eclipse unit-testing junit constructor

我正在创建一个PokerHand类并使用JUnit测试来测试它,出于某种原因,当我在一个测试方法中调用它时,当我创建一个PokerHand对象时,我的构造函数被调用了8次。

PokerHand构造函数(添加了一个打印语句以查看它被调用的次数,打印8次不同的时间):

//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();
}

测试用例:

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

我已经盯着屏幕看了一段时间,我是JUnit测试和eclipse的新手,所以我确定我只是错过了一个小细节。非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

根据您的评论提示修正了问题:可能您的方法 determineValueOfHand()错误地创建其他 PokerHand对象。

为了检查;我建议

  1. 你的构造函数
  2. 你的测试用例
  3. 使用对象引用执行println()。除此之外,您可以将进入/退出痕迹放入您的ctor!这使得构造函数调用发生的顺序更加明显。