JUnit5で変更・追加された機能

JUnit5で変更・追加された機能

JUnit4になってから約10年でメジャーバージョンアップしました。

違いを調査しました。

前提

言語 バージョン
Java 8以上

クラスアノテーションの変更

JUnit5からテストクラスにつけるアノテーションは@ExtendWith(SpringExtension.class)アノテーションを使用します。

@ExtendWith(SpringExtension.class)
public class{
public 何かのテスト() {
// テスト
}
}

view raw

gistfile1.txt

hosted with ❤ by GitHub

@SpringJUnitConfig(classes = AppConfig.class)は以下と同じです。

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = AppConfig.class)

view raw

gistfile1.txt

hosted with ❤ by GitHub

TCF機能でDIする

テストクラスに以下のアノテーションをつけることにより、依存関係にあるクラスに対してDIすることができます。

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = AppConfig.class)

view raw

gistfile1.txt

hosted with ❤ by GitHub

src/main/javaのどこかにAppConfig.javaを配置します。クラス名はAppConfigじゃなくてもOKです。ここではAppConfig.javaとしています。

AppConfig.java

package com.example.demo.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.example.demo.primary.repository")
public class AppConfig {}

view raw

gistfile1.txt

hosted with ❤ by GitHub

public修飾子が不要

@ExtendWith(SpringExtension.class)
public class AaaTest{
public 何かのテスト() {
// テスト
}
}

view raw

gistfile1.txt

hosted with ❤ by GitHub

というように記述していましたが、クラスもメソッドもpublic修飾子が不要になります。

class AaaTest{
何かのテスト() {
// テスト
}
}

view raw

gistfile1.txt

hosted with ❤ by GitHub

並行テストができる

JUnit5からパラレルにテストを実行することができます。これにより格段にテスト実行が早くなります。非常に強力な機能だと思います。

junit-platform.propertiesファイルをクラスパスルートに配置し、中身を以下の通りにします。

srt/test/resources/junit-platform.properties

junit.jupiter.execution.parallel.enabled=true # 並行実行を有効
junit.jupiter.execution.parallel.mode.default=concurrent #デフォルトを同時実行(不要な気がする)

view raw

gistfile1.txt

hosted with ❤ by GitHub

具体的には、src/test/resources配下にjunit-platform.propertiesを配置します。

@TestMethodOrderアノテーションでテスト実行順序指定

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)をクラスにつけると各@Testの実行順を指定することができます。

各テストメソッドに@Order(org.junit.jupiter.api.Test)アノテーションを付与します。

引数に数値を指定し、その指定順にテストは実行されます。

JUnit5で廃止されたアノテーション

以下廃止になりました。

JUnit5で廃止されたアノテーション
@RunWith(Enclosed.class)
@RunWith(Theories.class)

前処理/後処理

テストする前に前処理/後処理をしますが、JUnit4の時とアノテーションが変わっています。

処理 意味 mocha
@BeforeAll テスト前に1度だけ実行されるstaticメソッド @Before
@BeforeEach 各テストメソッドの初期処理として1度だけ実行される @BeforeEach
@AfterAll テスト前に1度だけ実行されるstaticメソッド @After
@AfterEach 各テストメソッドの初期処理として1度だけ実行される @AfterEach

テストをスキップする

JUnit5ではorg.junit.jupiter.api.Disabledアノテーションを使用して、クラスレベルでテストのスキップやメソッドレベルでのテストのスキップをすることが可能です。

@Disabledアノテーションを付与するだけです。

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA