JUnit テストケース @Before @BeforeClass アノテーション
⚡ スマートサマリー
JUnit は、最も広く使用されている単体テストフレームワークです。 Javaまた、そのテストフィクスチャの注釈によって、テストクラス内の各テストメソッドの実行前後に何が起こるかを正確に制御できます。

JUnit 最も人気のあるユニットです テスト フレームワーク Java. 明示的に推奨されているのは 単体テスト. JUnit ウェブアプリケーションのテストにサーバーを必要としないため、テストプロセスが迅速になります。
その JUnit フレームワークでは、テスト ケースとテスト データを迅速かつ簡単に生成することもできます。の org.junit パッケージは、 JUnit テスト、アサート、アフター、ビフォーなどのテスト。 JUnit 家族もまた、こうした同じ構成要素の上に成り立っている。
テストフィクスチャとは何ですか?
テストフィクスチャとは何かを理解する前に、以下のコードを見てみましょう。
このコードは、単純なファイルに対して XNUMX つのテスト ケースを実行するように設計されています。
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
ここにはいくつかの問題があります
- コードは判読できません。
- コードの保守は容易ではありません。
- テスト スイートが複雑な場合、コードに論理的な問題が含まれる可能性があります。
同じコードを使用して比較します JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
このコードははるかに読みやすく、保守しやすい。上記のコード構造は テスト治具。
テスト フィクスチャは、 JUnit テストケース 走る。 通常、テスト フィクスチャには次のものが含まれます。
- あらゆるテスト ケースで使用できるオブジェクトまたはリソース。
- これらの物品や資源を利用可能にするために必要な活動。
- これらの活動は、
- 割り当て ( )
- 割り当て解除 (取り壊す).
セットアップと分解
照明器具が重要な理由は JUnit これらのフックは、すべてのテストで実行されます。
- 通常、各テスト ケースの前に実行する必要がある繰り返しのタスクがいくつかあります。 例: データベース接続を作成します。
- 同様に、各テストケースの最後には、いくつかのタスクが繰り返される場合があります。 例: テストの実行が終了したらクリーンアップします。
- JUnit セットアップとティアダウンに役立つ注釈を提供します。これにより、リソースが確実に解放され、テストシステムが次のテストケースの準備が整った状態になります。
ボーマン JUnit 注釈については以下で説明します。
@前に の注釈 JUnit を含むメソッドで使用されます Java 各テストケースの前に実行されるコード、つまり、各テスト実行の前に実行されるコード。
解体(評決に関係なく)
@後 アノテーションは、以下の内容を含むメソッドに使用されます。 Java 各テストケースの後に実行されるコード。これらのメソッドは、テストケースで例外が発生した場合やアサーションが失敗した場合でも実行されます。
注意:
- 上記の注釈はいくつでも付けることができます。
- 注釈が付けられたすべてのメソッド @前に in JUnit は各テスト ケースの前に実行されますが、任意の順序で実行できます。
- スーパークラスから @Before メソッドと @After メソッドを継承できます。実行は次のようになります。これは標準的な実行プロセスです。 JUnit.
- 実行する JUnit スーパークラスの @Before メソッド
- このクラスの @Before メソッドを実行します
- このクラスで @Test メソッドを実行します
- このクラスの @After メソッドを実行します
- スーパークラスで @After メソッドを実行する
JUnit 5年の注記: これらの注釈は JUnit 4(org.junit). JUnit 5 は名前を変更しました org.junit.jupiter.api JUnit 以下の4つのコードは、旧型エンジンでも動作します。
| JUnit 4つの注釈 | JUnit 5(木星)相当 | Active Runs |
|---|---|---|
| @前に | @BeforeEach | すべてのテスト方法の前に |
| @後 | @AfterEach | 各テスト方法の後 |
| @BeforeClass | @BeforeAll | クラス全員の前で一度 |
| @放課後 | @結局 | 全員の後に一度 |
| @無視する | @無効 | 注釈付きテストをスキップします |
例:テストフィクスチャとしてファイルを持つクラスを作成する
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
上記の例では、実行の流れは次のようになります。図 tracテストメソッドごとに、作成-テスト-削除のサイクルが1回発生します。
- createOutputFile()
- testFile1()
- deleteOutputFile()
- createOutputFile()
- testFile2()
- deleteOutputFile()
仮定:
testFile1() は testFile2() より先に実行されますが、これは保証されていません。
XNUMX 回限りのセットアップ
- メソッドは、テストが実行される前、およびテストが実行される前に、テスト クラス全体に対して XNUMX 回だけ実行できます。 @前に メソッド。
- 「一度限りの設定」は、サーバーの起動、通信の開始、その他同様の作業に役立ちます。テストごとにリソースを閉じたり開いたりするのは時間がかかります。
- これはアノテーションを使用して行うことができます @BeforeClass in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
その方法は パブリック静的空隙、理由 JUnit テストインスタンスが存在する前に呼び出されます。
一度限りの破棄
- 一度限りのセットアップと同様に、一度限りのクリーンアップ方法も利用できます。これは、すべてのテストケースメソッドの後に実行され、 @後 注釈が実行されました。
- 停止に役立ちますping サーバーと通信リンクの切断。
- これは、 @放課後 注釈。
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit テストスイート
試験日程が確定すると、関連する試験クラスは通常グループ化され、同時に開始されます。
複数のテストを特定の順序で実行したい場合は、すべてのテストを1か所にまとめることで実現できます。この場所をテストスイートと呼びます。テストスイートの実行方法と使用方法の詳細については、 JUnit この チュートリアル.
JUnit テストランナー
JUnit テスト ケースを実行するためのツールを提供します。
- JUnitペース: クラスはこれらのテストを実行するために使用されます。
- と呼ばれるメソッド 実行クラス により提供さ org.junit.runner です。JUnitペース: XNUMX つまたは複数のテスト クラスを実行するために使用されます。
- このメソッドの戻り値の型は、 結果 オブジェクト(org.junit.runner.結果これは、テストに関する情報にアクセスするために使用されます。より詳しく知りたい場合は、以下のコード例を参照してください。
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
上記のコードでは、「result」オブジェクトが処理され、実行中のテストケースの失敗と成功の結果が取得されます。ヘルパーとしては、 アサートイコール それらの失敗を取り上げながら @無視する テストを欠席する。
JUnit 5年の注記: JUnitペース: は JUnit 4人目のランナー。 JUnit 5 はそれを JUnit Platform ランチャー API は通常 IDE によって起動され、 Gradle またはMaven Surefire。
最初 JUnit プログラム
SDLCに関する十分な知識、 Java プログラミング、そしてその基礎 ソフトウェアテスト プロセスは理解に役立ちます JUnit プログラム、そしてその方法を知ることも 単体テスト 統合テストとは異なる。
実際の例を使って単体テストを理解しましょう。テストメソッドに注釈を付けたテストクラスを作成する必要があります。 @テスト 以下に示すように:
MyFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
テストランナー.java
上記のテストメソッドを実行するには、テストランナーを作成する必要があります。テストランナーでは、テストクラスをパラメーターとして追加する必要があります。 JUnitCoreのrunClasses()メソッド。テストが合格か不合格かに基づいて、テスト結果を返します。
詳細については、以下のコードを参照してください。
package guru99.JUnit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
出力
Once テストランナー.java テストメソッドを実行すると、失敗または成功として出力されます。出力の説明は以下のとおりです。
- この例では、実行後、 MyFirstClassTest.javaテストに合格し、結果は緑色で表示されます。
- 失敗した場合は結果が赤色で表示され、その失敗は失敗として観察できます。 trace. 参照 JUnit 以下のGUIをご覧ください。


