4

私のテストでは、DB への接続を使用してい@Before ます@After

私の質問は、テスト中に例外がスローされた場合はどうなりますか?

どうすれば接続を閉じることができますか?

finallytry と catch ブロックの後に来るものと同等のものを探しています。

4

1 に答える 1

6

@Afterあなたが望むことをします。そのドキュメントによると:

すべての @After メソッドは、Before メソッドまたは Test メソッドが例外をスローした場合でも実行されることが保証されています。

(これは直感的に理にかなっています。なぜなら、テスト メソッドはtry例外をキャッチしてテストの失敗に変換するブロックにラップされていると想像しているからです。したがって、テストは失敗し、ティアダウン ブロックが実行されます。)

Errorがスローされた場合にメソッドが実行されることを指定していないことに注意してください。通常は@Afterメソッドを使用してテスト状態を維持するだけですが、この場合はそれ以上テストが実行されないため、問題は発生しません。絶対にクリーンアップする必要があるリソース (ネイティブ フックなど) をテストで使用する場合はtry-finally、テスト メソッド自体のブロックでこれを行うのが最善です。

于 2012-08-17T08:23:33.513 に答える