gpt4 book ai didi

java - 使用 JUnit 4 的预期异常机制导致意外行为的原因?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:47 24 4
gpt4 key购买 nike

我正在尝试测试特定方法是否会从方法中抛出预期的异常。根据 JUnit4 文档和 this answer我把测试写成:

@Test(expected=CannotUndoException.class)  
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'

command.undo();
}

但是,此代码未通过 JUnit 测试,将抛出的(和预期的)异常报告为错误。

我正在测试的方法在主体中只有这个:

public void undo() {
throw new CannotUndoException();
}

此外,以下测试通过:

public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'

try {
command.undo();
fail();
} catch (CannotUndoException cue){

}
}

意味着实际抛出了预期的异常。

我实际上打算改变方法来实际做一些事情,而不是仅仅抛出异常,但它让我很好奇是什么导致了这个问题,以免将来再次发生。

已进行以下检查:

  • 导入到测试用例中的CannotUndoException是正确的
  • JUnit 版本 4 是我的类路径中唯一的一个
  • 清理和构建 Eclipse 工作区并没有改变结果

我使用的是 JUnit 4.1,在同一测试中我使用的是 Mockito。

可能导致错误失败的原因是什么?

最佳答案

我发现了问题。

我使用的 TestRunner 是正确的 (JUnit 4),但是,我将我的测试类声明为:

public class CommandTest extends TestCase

我认为这会导致测试运行程序将其视为 JUnit 3 测试。我删除了 extends TestCase 并收到了预期的结果。

关于java - 使用 JUnit 4 的预期异常机制导致意外行为的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/395317/

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