【Spring】JUnit、カバレッジ

事前準備(JUnit5)

Mavenでの設定
※java8以上のバージョンが必要
pomに下記を追加する
他のspringのライブラリとバージョンを合わせるため${org.springframework-version}と記載

  <dependencies>
 ~~~~~~~~~~~~~~~~~
    <!-- Spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${org.springframework-version}</version>
      <scope>test</scope>
    </dependency>

    <!-- Test -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>
 ~~~~~~~~~~~~~~~~~
  </dependencies>

テストクラスの作成方法

テストしたいクラスを右クリックして新規>その他を選択



testフォルダにクラスが作成される

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class OfferServiceTest {

    @Test
    void testAdd() {
        fail("まだ実装されていません");
    }

}

テストコードの記述(JUnit5)

DIする場合は@SpringJUnitWebConfig(classes = クラス名.class)または
@ExtendWith(SpringExtension.class)と@ContextConfiguration(classes = クラス名.class)をつける

@SpringJUnitWebConfig(classes = OfferService.class)
//下記でも可能
//@ExtendWith(SpringExtension.class)
//@ContextConfiguration(classes = OfferService.class)
class OfferServiceTest {
    @Autowired
    OfferService service;

    @Test
    void testAdd() {
        // 期待値
        int expected = 3;
        // 試験実施
        int actual = service.add(1, 2);
        // 検証結果
        assertEquals(expected, actual);
    }

}

アサーションの種類(JUnit5)

assertEquals 2 つの値が等しいかどうかをテスト
assertTrue 引数の値が true かどうかをテスト
assertFalse 引数の値が false かどうかをテスト
assertNull 引数の値が null かどうかをテスト
assertNotNull 引数の値が null でないかどうかをテスト
assertSame 2 つの参照が同じインスタンスかどうかをテスト
assertNotSame 2 つの参照が異なるインスタンスかどうかをテスト
assertArrayEquals 2 つの配列が等しいかどうかをテスト
assertThrows 指定した関数が例外をスローするかどうかをテスト
assertNotEquals 2 つの値が等しくないかどうかをテスト
assertThat 値が指定された条件を満たすかどうかを確認
assertThrows 例外がスローされるかどうかを確認
assertDoesNotThrow 例外がスローされないかどうかを確認
assertTimeout 指定された時間内に実行が終了するかどうかを確認
assertTimeoutPreemptively 指定された時間内に実行が終了するかどうかを確認
assertLinesMatch 2つの文字列が一致するかどうかを確認
assertAll 複数のアサーションをまとめて確認

JUnitの実行(JUnit5)

JUnitのバージョンの確認(初回)

テストクラスで「右クリック」>「実行」>「実行の構成」を選択

テスト・ランナーがJUnit5になっていることを確認

指定したテストメソッドを実行

テストしたいメソッド名で「右クリック」>「実行」>「JUnitテスト」を選択

結果が表示される

テストクラス内の全メソッドを実行

クラス名で「右クリック」>「実行」>「JUnitテスト」を選択

結果が表示される

カバレッジ

「右クリック」>「カバレッジ」>「JUnitテスト」を選択

カバレッジが100%でないと、通っていない処理がある

緑色:実行された行
黄色:実行されているがパターンが網羅されていない行
赤色:実行されていない行