当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用JUnit4的预期异常机制导致意外行为的原因?》经验,为你挑选了1个好方法。

我试图测试一个特定的方法从方法抛出预期的异常.根据JUnit4文档和这个答案,我把测试编写为:

@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.

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



1> Grundlefleck..:

我发现了这个问题.

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

public class CommandTest extends TestCase

我假设它导致测试运行器将其视为JUnit 3测试.我删除extends TestCase并收到了预期的结果.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有