Java は動作のためにコンパイルが必要な言語です。開発中のテストの度に毎度毎度プログラム全体をコンパイルして手でテストして、とやっているとひどく時間を食います(少なくとも Java で web サイトを開発する際の手作業テストは、同じく web サイトを開発する際の PHP + JavaScript の手作業テストより遥かに時間を食いました。Java 自体というよりもサーバーとの兼ね合いで時間がかかった様な印象)。JUnit は単体テストを行うためのツールであり、これにテストが必要な範囲だけを処理してもらうことで快適に開発できます。
junit-team/junit5: ✅ The 5th major version of the programmer-friendly testing framework for Java and the JVM
Maven Repository: org.junit.jupiter » junit-jupiter-api
単純な実装としては次の様にテスト内容のメソッドに@Test
のアノテーションをつけ、テスト内容のメソッドの中にテスト内容を書くだけです。
// HogeControllerTest.java import org.junit.jupiter.api.Test; class HogeControllerTest { // テスト対象クラスのインスタンス private final HogeController controller = new HogeController(); // アノテーションでテストメソッドであることを示す。 @Test void indexOK() { // 例外が吐かれない === レスポンス 200 相当であることを確かめる controller.index(); } }
例のテストはとあるURLにアクセスした際のコントローラの index メソッドが正常に動作するか、の様なテストです。何がしか要件なり仕様なりに沿ったアサートがあるとなお良いですし、リクエストのモックが必要な場合も多いですが、とりあえずこれだけでも適当にパラメータ抜きでアクセスされた際に異常な挙動が起きるコードであるか否かを確かめられます。
JUnit は IDE を使うと楽に動作させられます。Eclipse ならば次図の様に右クリック->実行->JUnitテスト、あるいはAlt + Shift + X を押して開けるポップアップから Tで実行の様にできます。
IntelliJ IDEA ならば再生マークや Ctrl + Shift + F10です。
JUnit をコンソール代わりにして開発を行うとトライアンドエラーをサクサクでき、開発時のテスト内容も保存しておけるので大変便利です。