Gru*_*eck 9 java unit-testing exception junit4
我试图测试一个特定的方法从方法抛出预期的异常.根据JUnit4文档和这个答案,我把测试编写为:
@Test(expected=CannotUndoException.class)
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'
command.undo();
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码未通过JUnit测试,将抛出(和预期)异常报告为错误.
我正在测试的方法在体内只有这个:
public void undo() {
throw new CannotUndoException();
}
Run Code Online (Sandbox Code Playgroud)
此外,以下测试通过:
public void testUndoThrowsCannotUndoException() {
// code to initialise 'command'
try {
command.undo();
fail();
} catch (CannotUndoException cue){
}
}
Run Code Online (Sandbox Code Playgroud)
意味着实际抛出了预期的异常.
我实际上计划将方法更改为实际执行某些操作,而不是仅仅抛出异常,但是让我对导致问题的原因感到好奇,以免将来再次发生.
已进行以下检查:
我正在使用JUnit 4.1,并且在同一测试中我正在使用Mockito.
什么可能导致错误的失败?
Gru*_*eck 10
我发现了这个问题.
我使用的TestRunner是正确的(JUnit 4),但是,我将我的测试类声明为:
public class CommandTest extends TestCase
Run Code Online (Sandbox Code Playgroud)
我假设它导致测试运行器将其视为JUnit 3测试.我删除extends TestCase并收到了预期的结果.