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);
}
}