我正在使用“测试驱动设计”概念编写Stack类。
在setUp()方法中,我的堆栈是用0个这样的元素创建的
Stack stack = new Stack();
这是我尝试的测试,以捕获在setUp()之后立即调用top时将引发的StackEmptyException。
@Test
public final void testTopIsEmpty() throws StackEmptyException
{
StackEmptyException thrown = null;
try
{
stack.top();
}
catch (StackEmptyException caught)
{
thrown = caught;
}
assertThat(thrown, is(instanceOf(StackEmptyException.class)));
}
我的问题在最后一行。我不明白为什么我的代码不起作用!
最佳答案
ExpectedException可用于验证是否引发了异常。可以在方法中间进行检查,以确保较早的方法调用不会意外引发相同的异常。
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testTopIsEmpty() throws StackEmptyException {
thrown.expect(StackEmptyException.class);
stack.top();
}