Java 构造函数被多次调用

标签 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 还很陌生,所以我确信我只是错过了一个小细节。非常感谢任何帮助

最佳答案

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

为了检查这一点;我建议

  1. 你的构造函数
  2. 您的测试用例

println() 是否使用对象引用。除此之外,您还可以将进入/退出跟踪放入您的 ctor 中!这使得构造函数调用发生的顺序更加明显。

关于Java 构造函数被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240262/

相关文章:

java - 不能从静态上下文中引用内部类,但前提是外部类是通用的

java - 在服务器和客户端之间传递对象的最佳方式是什么?

java - 在类之间传递值

java - Eclipse 中的 Github 项目未显示为 JavaProject

javascript - 如何让 angular2 在 eclipse 中使用 typescript 工作

java - 验证 JUnit 中的具体异常详细信息

java - 如何从具有多个属性的类中获取一个特定属性?

java - 如何在 Java 的实现类中的抽象类中实现抽象类?

c++ - 如何在我自己的staticLib中使用staticLib?

c# - Visual Studio 中的 TestContext - 它有什么作用?