@Before、@BeforeClass、@BeforeEach、@BeforeAll の違い 質問する

@Before、@BeforeClass、@BeforeEach、@BeforeAll の違い 質問する

主な違いは何ですか?

  • @Beforeそして@BeforeClass
    • JUnit 5@BeforeEachでは@BeforeAll
  • @Afterそして@AfterClass

によるJUnit API について @Before次のような場合に使用されます。

テストを作成する場合、複数のテストを実行する前に同様のオブジェクトを作成する必要があることに気付くことがよくあります。

一方、@BeforeClassデータベース接続を確立するためには を使用できます。しかし、@Before同じことはできないのでしょうか?

ベストアンサー1

マークされたコード@Beforeは各テストの前に実行され、 は@BeforeClassテスト フィクスチャ全体の前に 1 回実行されます。テスト クラスに 10 個のテストがある場合、@Beforeコードは 10 回実行されますが、@BeforeClass実行されるのは 1 回だけです。

一般的に、@BeforeClass複数のテストで同じ計算コストの高いセットアップ コードを共有する必要がある場合に を使用します。データベース接続を確立することは、このカテゴリに分類されます。 のコードを に移動できます@BeforeClass@Before、テストの実行に時間がかかる場合があります。 マークされたコード@BeforeClassは静的初期化子として実行されるため、テスト フィクスチャのクラス インスタンスが作成される前に実行されることに注意してください。

JUnit5 について、タグ@BeforeEachとタグは、JUnit 4 のとタグ@BeforeAllに相当します。これらのタグの名前は、実行されるタイミングをもう少しわかりやすく表しており、大まかに解釈すると、「各テストの前」と「すべてのテストの前に 1 回」となります。@Before@BeforeClass

おすすめ記事