gpt4 book ai didi

java - 如何在同时捕获异常的同时断言异常?

转载 作者:行者123 更新时间:2023-11-29 08:53:58 25 4
gpt4 key购买 nike

我正在为我的面向对象编程类(class)构建一个扑克手程序和比较纸牌。当创建一个新的 PokerHand 对象时,我将 5 张卡片对象传递给它。然后我需要检查是否有任何重复的卡片,如果有,则抛出一个新的 DuplicateCardException。

这是针对该异常的 JUnit 测试:

@Test(expected = DuplicateCardException.class)
public void tryToAddTheSameCardTwice() {
new PokerHand(C2, C3, C4, C5, C5);
}

你显然不能有 2 个 5 的梅花,所以在比较卡片时,我抛出异常。但是后来我得到了红色条,但它失败了。经过大量研究,听起来它失败了,因为我捕获了异常,因此 JUnit 测试无法检测到它。但是如果我没有捕获它,那么编译器会提示没有处理异常。

这是抛出异常的方法(card4和card5都是“C5”对象):

public void checkForDuplicates() {
try {
if(card4==card5)
throw new DuplicateCardException();

} catch (DuplicateCardException e) {e.printStackTrace();}
}

所以我的问题是如何在不更改实际测试代码的情况下让 JUnit 测试知道抛出异常? (因为这就是我的评分标准)我尝试在方法标题中添加“抛出 DuplicateCardException”,而不是在测试区域中包含一个 try/catch block ,然后它通过,但我无法更改测试代码。

最佳答案

如果您需要编辑代码但不允许编辑测试用例以添加 throws 声明,您可能需要取消选中异常。这是通过从 RuntimeException(或其子类)而不是 Exception 扩展来实现的。

关于java - 如何在同时捕获异常的同时断言异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com