Java JUnitの利用

JUnit

Javaの単体テストツール。テストをコードで書くことで、テストを自動化する。

テストの自動化を行うことで修正に強いコードが出来る。

テストを先に書く「テストファースト」の技法もある。

JUnit用クラスの作成

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のテスト

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