[解決済み] Junitの@Before/@Afterはどのような順番で呼び出されるのですか?
質問
統合テスト・スイートがあります。私は
IntegrationTestBase
クラスがあり、すべてのテストがこれを継承しています。この基本クラスには
@Before
(
public void setUp()
) と
@After
(
public void tearDown()
) メソッドでAPIとDBの接続を確立しています。私がやっていることは、それぞれのテストケースでこの2つのメソッドをオーバーライドして
super.setUp()
と
super.tearDown()
. しかし、これは誰かがsuperを呼び忘れたり、間違った場所に置いたりして例外が発生し、finallyでsuperを呼び忘れたりすると問題になることがあります。
私がやりたいのは
setUp
と
tearDown
メソッドをベースクラス
final
を追加し、さらに独自のアノテーションを施した
@Before
と
@After
メソッドを呼び出します。いくつかの初期テストを行ったところ、常にこの順序で呼び出されるようです。
Base @Before
Test @Before
Test
Test @After
Base @After
というのがあるのですが、順番が保証されていないため、問題が発生しないかちょっと心配です。いろいろ調べてみたのですが、この件に関するものは見当たりません。そんなことしても問題ないのか、どなたかご存知でしょうか?
コードです。
public class IntegrationTestBase {
@Before
public final void setUp() { *always called 1st?* }
@After
public final void tearDown() { *always called last?* }
}
public class MyTest extends IntegrationTestBase {
@Before
public final void before() { *always called 2nd?* }
@Test
public void test() { *always called 3rd?* }
@After
public final void after() { *always called 4th?* }
}
どのように解決するのですか?
はい、この動作は保証されています。
@Before
:
は
@Before
のメソッドは、現在のクラスでオーバーライドされていない限り、 現在のクラスのメソッドより先に実行されます。それ以外の順序は定義されていません。
@After
:
は
@After
スーパークラスで宣言されたメソッドは、現在のクラスでオーバーライドされない限り、現在のクラスのメソッドの後に実行されます。
関連
-
Java Exceptionが発生しました エラー解決
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
IDEA パッケージステートメントの欠落
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
java の例外が発生しました java
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
JQuery DataTable 详解
-
linux run jarfile Invalid or corrupt jarfile error.
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
JSPで「リストが型解決できない!」の解決方法
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。