1. ホーム

[解決済み】@Before、@BeforeClass、@BeforeEach、@BeforeAllの違いについて

2022-04-13 15:27:08

質問

との主な違いは何ですか?

  • @Before@BeforeClass
    • で、JUnit 5 では @BeforeEach@BeforeAll
  • @After@AfterClass

によると JUnit Api @Before は以下のような場合に使用します。

テストを書くとき、いくつかのテストが実行される前に類似のオブジェクトを作成する必要があることはよくあることです。

ここで @BeforeClass は、データベース接続を確立するために使用することができます。しかし @Before も同じですか?

解決方法は?

と書かれたコードは @Before は各テストの前に実行され、一方 @BeforeClass はテストフィクスチャ全体の前に一度だけ実行されます。あなたのテストクラスが 10 個のテストを持つ場合。 @Before のコードは10回実行されますが @BeforeClass は一度だけ実行されます。

一般的には @BeforeClass 複数のテストが同じ設定コードを共有する必要がある場合。データベース接続の確立が、このカテゴリに含まれます。のコードを @BeforeClass@Before しかし、テストの実行には時間がかかるかもしれません。とマークされたコードに注意してください。 @BeforeClass は静的なイニシャライザーとして実行されるので、テストフィクスチャのクラスインスタンスが作成される前に実行されます。

JUnit 5 というタグがあります。 @BeforeEach@BeforeAll が相当します。 @Before@BeforeClass をJUnit 4に追加しました。これらの名前は、それらがいつ実行されるかをもう少し示しており、緩やかに解釈されています。それぞれのテストの前に」「すべてのテストの前に」です。