1

テスト駆動設計のコンセプトを使用して 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)));
}

私の問題は最後の行にあります。コードが機能しない理由がわかりません。

4

2 に答える 2

3

ExpectedException を使用して、例外がスローされたことを確認できます。メソッドの途中でチェックを行って、以前のメソッド呼び出しが誤って同じ例外をスローしないようにすることができます。

@Rule
public ExpectedException thrown = ExpectedException.none();

@Test
public void testTopIsEmpty() throws StackEmptyException {
    thrown.expect(StackEmptyException.class);
    stack.top();
}
于 2012-10-22T23:14:52.707 に答える
2

JUnit で例外をテストする正しい方法は次のとおりです。

@Test(expected = StackEmptyException.class)
public final void testTopIsEmpty() throws Exception
{
    stack.top();
}
于 2012-10-22T22:52:19.387 に答える