主な違いは何ですか?
@Before
そして@BeforeClass
- JUnit 5
@BeforeEach
では@BeforeAll
- JUnit 5
@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