Javaの単体テストツール。テストをコードで書くことで、テストを自動化する。
テストの自動化を行うことで修正に強いコードが出来る。
テストを先に書く「テストファースト」の技法もある。
testなどのパッケージを作り、そこにクラス(ShouhinTestなど)を作成する。
Eclipseの場合、[新規]-[その他]で[Java]-[JUnit]-[JUnitテストケース]が早い。この場合、以下のようなクラスになる
package test; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; class ShouhinTest { @Test void test() { fail("まだ実装されていません"); } }
テストを行うメソッドを戻り値、引数無しで作成し、@Testを付ける。
@Test public void valueTest() { }
テストしたい値を算出し、
assertEquals(正しい値,テストしたい値);
で正しい値になっているかを確認する。
@Test void valueTest() { Shouhin s = new Shouhin(1,"りんご",100); assertEquals(1, s.getSid()); assertEquals("りんご", s.getSname()); assertEquals(100, s.getTanka()); }
プロジェクトを右クリックし、[実行]-[JUnit]で行う。
すると、JUnitの画面に実行数とエラー/失敗数が表示される。全て成功なら緑色でバーが表示される。
以降はJUnitの画面の「テストの再実行」ボタンを押すのが早い。
SpringBootの場合、src/test/java内に作成する。クラスに @SpringBootTest を付ける
package com.example.boothanbai; import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import com.example.boothanbai.model.Shouhin; @SpringBootTest public class ShouhinTest { @Test public void validValue() { Shouhin sample = new Shouhin(1,"りんご",100); assertThat(sample.getSid()).isEqualTo(1); assertThat(sample.getSname()).isEqualTo("りんご"); assertThat(sample.getTanka()).isEqualTo(100); }
repositoryはAutowiredで使用可能。
package com.example.boothanbai; import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import com.example.boothanbai.model.Shouhin; import com.example.boothanbai.model.ShouhinRepository; @SpringBootTest public class ShouhinTest { @Autowired ShouhinRepository repository; @Test public void validValue() { Shouhin sample = new Shouhin(1,"りんご",100); assertThat(sample.getSid()).isEqualTo(1); assertThat(sample.getSname()).isEqualTo("りんご"); assertThat(sample.getTanka()).isEqualTo(100); } @Test public void repoFind() { Optional<Shouhin> s = repository.findById(1); Shouhin sample = s.get(); assertThat(sample.getSid()).isEqualTo(1); assertThat(sample.getSname()).isEqualTo("りんご"); assertThat(sample.getTanka()).isEqualTo(100); } }