【发布时间】:2016-08-31 03:27:51
【问题描述】:
我正在创建一个 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 的新手,所以我确定我只是遗漏了一个小细节。非常感谢任何帮助
【问题讨论】:
-
你的测试课还有什么?必须是其他内容,例如,
D10未在此处声明。 -
您能否提供包含您的测试的类的完整代码?
-
请转到帮助中心;并阅读有关创建 minimal viable 示例的信息。您不想发布 all 您的代码。但是可以编译并显示问题的代码。 (并且记录在案:创建这样一个示例的活动通常会消除在这里询问的需要;因为这通常会让你自己找到你的错误——因为你试图隔离它)。
-
另一个提示:将您的 println 更改为 ("PokerHand ctor " + this) - 例如,您要确保 determineValueOfHand() 不会创建 other PokerHand 对象!因此,查看创建了哪些 PokerHand 对象会有所帮助;你也可以在你的测试用例中为 a 做一个 println!
-
您还可以打印堆栈跟踪以查看调用构造函数的内容。
标签: java eclipse unit-testing junit constructor