如何在eclipse中使用测试驱动设计概念测试异常

时间:2012-10-22 22:49:13

标签: java exception junit testdrivendesign

我正在使用测试驱动设计概念编写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)));
}

我的问题出在最后一行。我不明白为什么我的代码不起作用!

2 个答案:

答案 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();
}