我正在使用测试驱动设计概念编写Stack类。
在setUp()方法中,我的堆栈创建了0个元素,如
Stack stack = new Stack();
这是我尝试捕获StackEmptyException的尝试,当setUp()之后立即调用top时会引发它。
@Test
public final void testTopIsEmpty() throws StackEmptyException
{
StackEmptyException thrown = null;
try
{
stack.top();
}
catch (StackEmptyException caught)
{
thrown = caught;
}
assertThat(thrown, is(instanceOf(StackEmptyException.class)));
}
我的问题出在最后一行。我不明白为什么我的代码不起作用!
答案 0 :(得分:3)
ExpectedException可用于验证是否抛出异常。检查可以在方法的中间,以确保先前的方法调用不会意外地抛出相同的异常。
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testTopIsEmpty() throws StackEmptyException {
thrown.expect(StackEmptyException.class);
stack.top();
}
答案 1 :(得分:2)
JUnit中test for an exception的正确方法是:
@Test(expected = StackEmptyException.class)
public final void testTopIsEmpty() throws Exception
{
stack.top();
}