このドキュメントには、5.9 GA 以降のすべての JUnit 5 リリースの変更ログが含まれています。
テストを作成するプログラマー、拡張機能の作成者、エンジン作成者、およびビルドツールや IDE ベンダー向けの包括的なリファレンスドキュメントについては、ユーザーガイドを参照してください。
5.10.2
リリース日: 2024年2月4日
範囲: 5.10.1 以降の軽微なバグ修正と変更。
このリリースのクローズされたすべての issue と pull request の完全なリストについては、GitHub の JUnit リポジトリにある 5.10.2 マイルストーンページを参照してください。
JUnit Platform
バグ修正
- 
junit-platform-launcherは、junit.platform.launcher.interceptors.enabledがtrueに設定されている場合、Java モジュールとして使用できるようになりました。- 
詳細については、issue #3561 を参照してください。 
 
- 
非推奨と破壊的変更
- 
型階層を検索する際に、フィールド述語がすぐに適用されなくなりました。 - 
これは、 ReflectionSupportのfindFields(…)およびstreamFields(…)、ならびにAnnotationSupportのfindAnnotatedFields(…)およびfindAnnotatedFieldValues(…)に影響を与えた 5.10.1 での変更を元に戻します。
- 
詳細については、issue #3638 を参照してください。 
 
- 
- 
型階層を検索する際に、メソッド述語がすぐに適用されなくなりました。 - 
これは、 ReflectionSupportのfindMethods(…)およびstreamMethods(…)、ならびにAnnotationSupportのfindAnnotatedMethods(…)に影響を与えた 5.10.1 での変更を元に戻します。
- 
詳細については、issue #3600 を参照してください。 
 
- 
JUnit Jupiter
バグ修正
- 
JUnit Jupiter は、サブクラスで @Testメソッドがオーバーライドされたときに、再び正しく検出するようになりました。- 
詳細については、issue #3600 を参照してください。 
 
- 
非推奨と破壊的変更
- 
@TempDirでアノテーションされたパッケージプライベートな静的フィールドは、非静的フィールドが別のパッケージに存在し、静的フィールドと同じ名前を持っている場合、@TempDirでアノテーションされた非静的フィールドによって再びシャドウされます。- 
これは、5.10.1 で行われた変更を元に戻します。 
- 
詳細については、issue #3638 を参照してください。 
 
- 
- 
@BeforeAllまたは@AfterAllでアノテーションされたパッケージプライベートなクラスレベルのライフサイクルメソッドは、メソッドレベルのライフサイクルメソッドが別のパッケージに存在し、クラスレベルのライフサイクルメソッドと同じ名前を持っている場合、@BeforeEachまたは@AfterEachでアノテーションされたメソッドレベルのライフサイクルメソッドによって再びシャドウされます。- 
これは、5.10.1 で行われた変更を元に戻します。 
- 
詳細については、issue #3600 を参照してください。 
 
- 
5.10.1
リリース日: 2023年11月5日
範囲: 5.10.0 以降の軽微なバグ修正と改善。
このリリースのクローズされたすべての issue と pull request の完全なリストについては、GitHub の JUnit リポジトリにある 5.10.1 マイルストーンページを参照してください。
JUnit Platform
バグ修正
- 
型階層を検索する際に、フィールド述語が適用されるようになりました。これにより、 ReflectionSupportのfindFields(…)およびstreamFields(…)、ならびにAnnotationSupportのfindAnnotatedFields(…)およびfindAnnotatedFieldValues(…)のバグが修正されました。- 
詳細については、issue 3532 を参照してください。 
 
- 
- 
型階層を検索する際に、メソッド述語が適用されるようになりました。これにより、 ReflectionSupportのfindMethods(…)およびstreamMethods(…)、ならびにAnnotationSupportのfindAnnotatedMethods(…)のバグが修正されました。- 
詳細については、issue 3498 を参照してください。 
 
- 
JUnit Jupiter
バグ修正
- 
@TempDirでアノテーションされたパッケージプライベートな静的フィールドは、非静的フィールドが別のパッケージに存在し、静的フィールドと同じ名前を持っている場合、@TempDirでアノテーションされた非静的フィールドによってシャドウされなくなりました。- 
詳細については、issue 3532 を参照してください。 
 
- 
- 
@BeforeAllまたは@AfterAllでアノテーションされたパッケージプライベートなクラスレベルのライフサイクルメソッドは、メソッドレベルのライフサイクルメソッドが別のパッケージに存在し、クラスレベルのライフサイクルメソッドと同じ名前を持っている場合、@BeforeEachまたは@AfterEachでアノテーションされたメソッドレベルのライフサイクルメソッドによってシャドウされなくなりました。- 
詳細については、issue 3498 を参照してください。 
 
- 
- 
@TempDirのON_SUCCESSクリーンアップモードは、クラスレベル(例: 静的フィールド)で宣言されている場合、テストメソッドとネストされたテストの失敗を考慮するようになりました。
- 
ユーザーガイドの RandomNumberExtensionの例が、Integer型と非静的フィールドインジェクションを正しくサポートするように更新されました。
5.10.0
リリース日: 2023年7月23日
範囲
- 
さまざまな実験的な API の安定版への昇格 
- 
新しい LauncherInterceptorSPI
- 
ConsoleLauncherの新しいtestfeed詳細モード
- 
実行せずにテストを検出するための新しい ConsoleLauncherサブコマンド
- 
テスト実行のドライランモード 
- 
サードパーティのテストエンジンで使用するための新しい NamespacedHierarchicalStore
- 
JUnit 内部呼び出しを非表示にするスタックトレースのプルーニング 
- 
テスト @Suiteクラスでの新しい@SelectMethodサポート。
- 
一時ディレクトリの作成方法をカスタマイズするための新しい TempDirFactorySPI
- 
@RepeatedTestの失敗しきい値
- 
ArgumentsProviderおよびArgumentConverterを実装するための新しい便利な基本クラス
- 
クラス/メソッドセレクター、 @MethodSource、@EnabledIf、および@DisabledIfのカスタムクラスローダーサポート
- 
並列実行の構成可能性の向上 
- 
多数のバグ修正と軽微な改善 
このリリースのクローズされたすべての issue と pull request の完全なリストについては、GitHub の JUnit リポジトリにある 5.10.0-M1、5.10.0-RC1、5.10.0-RC2、および 5.10.0 GA マイルストーンページを参照してください。
JUnit Platform
非推奨と破壊的変更
- 
GraalVM でネイティブイメージをビルドするには、ビルド引数 --initialize-at-build-time=org.junit.platform.launcher.core.LauncherConfigおよび--initialize-at-build-time=org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverterを構成する必要があるようになりました。
- 
MethodSelectorおよびNestedMethodSelectorのgetMethodParameterTypes()メソッドは非推奨となり、より明確にするためにgetParameterTypeNames()に置き換えられました。
新機能と改善点
- 
ModuleSelector、EngineDiscoveryListener、EngineDiscoveryRequestResolver、LauncherSession、LauncherSessionListener、並列実行サポートクラス、@Suiteおよび関連アノテーションなど、さまざまな「実験的」API が「安定」に昇格しました。
- 
Listを返すReflectionSupportのすべてのユーティリティメソッドに、Streamを返す対応するメソッドが追加されました。
- 
明示的な ClassLoaderを受け入れる、ReflectionSupportの新しいtryToLoadClass(…)バリアント。これにより、カスタムのClassLoader配置を使用してクラスを解決できます。
- 
ReflectionSupport.findMethod(Class<?>, String, String)は、デフォルトのClassLoaderを使用する代わりに、指定されたClassのClassLoaderを使用してパラメーター型をロードするようになりました。これにより、パラメーター型をカスタムのClassLoader配置(OSGi など)で解決できます。その結果、DiscoverySelectors.selectMethod(Class<?>, String, String)も、カスタムのClassLoader配置で正しく機能するようになりました。
- 
@Suiteテストエンジンでの新しい@SelectMethodセレクターサポート。
- 
クラスは、 @SelectClassesのnames属性を使用して、完全修飾名で選択できるようになりました。
- 
ClassSelector、NestedClassSelector、MethodSelector、およびNestedMethodSelectorの新しいオーバーロードされたコンストラクター。明示的なClassLoaderをパラメーターとして受け取り、セレクターが OSGi のようなカスタムClassLoader配置でクラスを選択できるようにします。
- 
パラメーター型の名前をコンマ区切りの文字列として提供する代わりに、型安全な代替としてパラメーター型の Class<?>…引数を受け入れる、DiscoverySelectorsの新しいselectMethod()およびselectNestedMethod()バリアント。
- 
JUnit Jupiter ライフサイクルコールバックとの整合性を保つために、開始/終了イベントとオープン/クローズイベントのリスナーメソッドペアが、「ラッピング」セマンティクスを使用して呼び出されるようになりました。これは、複数のリスナーが登録されている場合、終了/クローズイベントメソッドが、対応する開始/オープンイベントメソッドと比較して逆順で呼び出されることを意味します。これは、次のリスナーインターフェースに影響します: TestExecutionListener、EngineExecutionListener、LauncherDiscoveryListener、およびLauncherSessionListener。
- 
LauncherおよびLauncherSessionlistenerのインスタンスの作成、ならびに前者のdiscoverおよびexecuteメソッドの呼び出しをインターセプトするための新しいLauncherInterceptorSPI。詳細については、ユーザーガイドを参照してください。
- 
構成パラメーターを介して並列実行の max-pool-size-factorを制限するためのサポート。
- 
簡潔な形式でテスト実行イベントが発生したときに印刷する、 ConsoleLauncherの新しいtestfeed詳細モード。
- 
ConsoleLauncherの既存の機能が、テストを実行するためのexecuteと、登録されたテストエンジンを一覧表示するためのenginesの 2 つのサブコマンドに分割されました。
- 
指定された詳細モードで検出されたテストを実行せずに印刷するために、新しい discoverサブコマンドがConsoleLauncherに追加されました。
- 
より実用的なテスト検出中に検出された循環グラフの改善されたエラーメッセージ。 
- 
他のテストエンジンとその拡張機能で再利用するために、JUnit Jupiter エンジンから NamespacedHierarchicalStoreを抽出しました。
- 
実際にテストを実行せずにテスト実行をシミュレートする新しいドライランモード。詳細については、ユーザーガイドを参照してください。 
- 
失敗したテストによって生成されたスタックトレースから、 org.junit、jdk.internal.reflect、およびsun.reflectパッケージからの呼び出しがプルーニングされるようになりました。この機能は、構成パラメーターで無効にできます。詳細については、ユーザーガイドを参照してください。
- 
TestDescriptorの新しいgetAncestors()メソッド。
JUnit Jupiter
バグ修正
- 
@MethodSource、@EnabledIf、および@DisabledIfをサポートする拡張機能は、可能な場合は常に、テストクラスから取得したClassLoaderを使用して、完全修飾クラス名でクラスをロードするようになりました。これにより、クラスをカスタムのClassLoader配置(OSGi など)で解決できます。
- 
@ParameterizedTestメソッドの引数を完全修飾クラス名 (String) からClassに変換する際、デフォルトのClassLoaderの代わりに、@ParameterizedTestメソッドが宣言されているクラスのClassLoaderがClassの解決に使用されるようになりました。
非推奨と破壊的変更
- 
dynamic並列実行戦略では、デフォルトでスレッドプールが飽和できるようになりました。
- 
@CsvSourceにおけるブール値の暗黙的な型変換がより厳密になり、意図しないミスを明確にし、潜在的な混乱を避けるために、"true"または"false"(大文字と小文字を区別しない) の値のみを許可するようになりました。
新機能と改善点
- 
MethodOrderer,ClassOrderer,InvocationInterceptor,LifecycleMethodExecutionExceptionHandler,@TempDir, 並列実行アノテーションなど、さまざまな「実験的」API が「安定版」に昇格しました。
- 
JRE ベースの実行条件で使用するために、 JRE列挙型にJAVA_22が追加されました。
- 
選択した実行モードを使用する理由を文書化するために使用できる、 @Executionに新しいreason属性が追加されました。
- 
最大プールサイズ係数を設定するための新しい junit.jupiter.execution.parallel.config.dynamic.max-pool-size-factor設定パラメータ。
- 
プール飽和を無効にするための新しい junit.jupiter.execution.parallel.config.dynamic.saturate設定パラメータ。
- 
@RepeatedTestは、失敗回数が指定されたしきい値を超えた場合に、残りの繰り返しを自動的にスキップするように設定できるようになりました。詳細は ユーザーガイド を参照してください。
- 
@MethodSourceがstaticであるべき非静的ファクトリメソッドで使用されている場合、スローされる例外は、問題に対処する方法に関する意味のある説明をユーザーに提供するようになりました。
- 
@EmptySourceは、引数なしの公開コンストラクタを持つCollectionおよびMapサブタイプを含む、追加の型をサポートするようになりました。
- 
@ParameterizedTest呼び出しのインデックスを提供する新しいArgumentsAccessor.getInvocationIndex()メソッド。
- 
ArgumentsProviderとAnnotationConsumerの両方を実装する便利な基本クラスである新しいAnnotationBasedArgumentsProvider。
- 
ArgumentConverterとAnnotationConsumerの両方を実装する便利な基本クラスである新しいAnnotationBasedArgumentConverter。
- 
カスタムの*複合アノテーション*を作成するために、 @TempDirをメタアノテーションとして使用できるようになりました。詳細は、ユーザーガイド の@JimfsTempDirの例を参照してください。
- 
@TempDirは、読み取り専用に設定されている Windows 上のファイルとディレクトリを正常にクリーンアップするようになりました。
- 
@TempDir拡張機能が一時ディレクトリを作成する方法をカスタマイズするための新しいTempDirFactorySPI。詳細は ユーザーガイド を参照してください。
- 
ユーザーガイド に、フィールド上の @ExtendWithを介した拡張機能登録のドキュメントを改善するために、RandomNumberExtensionの実装例が含まれるようになりました。
- 
TestWatcher実装の適用範囲が、ユーザーガイドと Javadoc でより広範に文書化されました。
- 
DisplayNameGeneratorメソッドは、デフォルトの表示名ジェネレータにフォールバックするように指示するために、nullを返すことができるようになりました。
5.9.3
リリース日: 2023年4月26日
範囲: 5.9.2 以降のバグ修正と機能強化
このリリースの*クローズ済*のすべての課題とプルリクエストの完全なリストについては、GitHub の JUnit リポジトリの 5.9.3 マイルストーンページを参照してください。
JUnit Jupiter
バグ修正
- 
ローカル @MethodSourceファクトリメソッド名のパラメータ型が検証されるようになりました。たとえば、@MethodSource("myFactory(example.NonexistentType)")は、example.NonexistentTypeを有効な型に解決できないことを示す例外が発生するようになりました。
- 
ローカル @MethodSourceファクトリメソッド名のパラメータ型の構文が、正規配列名をサポートするようになりました。たとえば、@MethodSource("myFactory([I)")(すでにサポートされていた) のように *バイナリ* 名ではなく、@MethodSource("myFactory(int[])")のようにint[]を指定できるようになりました。また、@MethodSource("myFactory([Ljava.lang.String;)")の代わりに、@MethodSource("myFactory(java.lang.String[])")と指定できます。
- 
@MethodSourceファクトリメソッドを見つけるために使用される検索アルゴリズムが、オーバーロードされたファクトリメソッドの *ローカル* 修飾メソッド名と完全修飾メソッド名に対して一貫したセマンティクスを適用するようになりました。
- 
@ParameterizedTest呼び出し名の{displayName}プレースホルダーは、java.text.MessageFormatを使用して解析されなくなりました。その結果、@ParameterizedTestメソッドの表示名内のテキストは、呼び出し表示名で変更されずに含まれるようになります。たとえば、Kotlin メソッド名や、@DisplayNameで設定されたカスタム表示名には、アポストロフィ (') や{0}や{data}などのMessageFormat要素に似たテキストを含めることができるようになりました。
- 
@TempDirを介して作成された一時ディレクトリをクリーンアップする際に、削除できないファイルに対してスローされる例外に、根本原因が含まれるようになりました。
- 
ライフサイクルメソッドは、後方互換性のために再び privateとして宣言できます。ただし、ライフサイクルメソッドにprivate可視性を使用することは強く推奨されず、将来のリリースで許可されなくなります。
5.9.2
リリース日: 2023年1月10日
範囲: 5.9.1 以降のバグ修正と機能強化
このリリースの*クローズ済*のすべての課題とプルリクエストの完全なリストについては、GitHub の JUnit リポジトリの 5.9.2 マイルストーンページを参照してください。
JUnit Platform
5.9.1
リリース日: 2022年9月20日
範囲
- 
GraalVM ネイティブイメージでテストするための新しい @EnabledInNativeImageおよび@DisabledInNativeImageアノテーション。
- 
5.9.0 以降の軽微なバグ修正と機能強化 
このリリースの*クローズ済*のすべての課題とプルリクエストの完全なリストについては、GitHub の JUnit リポジトリの 5.9.1 マイルストーンページを参照してください。
JUnit Jupiter
バグ修正
- 
useHeadersInDisplayName属性がtrueに設定されている場合、@ParameterizedTestの@CsvSourceのvalue属性を介して提供されるヘッダーが正しく解析されるようになりました。
- 
複数のインターフェイスから継承されたファクトリメソッドを参照する @MethodSourceアノテーションで設定された@ParameterizedTestメソッドが、同じ名前の複数のファクトリメソッドが見つかったことを示す例外で失敗しなくなりました。
- 
同じクラス内の他の非ファクトリメソッドと同じ名前のファクトリメソッドを参照する @MethodSourceアノテーションで設定された@ParameterizedTestメソッドが、同じ名前の複数のファクトリメソッドが見つかったことを示す例外で失敗しなくなりました。
- 
ThreadMode.SEPARATEを使用してタイムアウトが適用されたメソッドからスローされたアサーションの失敗が、正しくレポートされるようになりました。
5.9.0
リリース日: 2022年7月26日
範囲
- 
新しい Open Test Reporting 形式の XML レポート 
- 
@TempDirの設定可能なクリーンアップモード
- 
@Timeoutの設定可能なスレッドモード
- 
OSアーキテクチャに基づいた条件付き実行 
- 
新しい TestInstancePreConstructCallback拡張API
- 
ExecutableInvokerを介したカスタム拡張メソッドの再利用可能なパラメータ解決
- 
@MethodSourceメソッドのパラメータインジェクション
- 
新しい IterationSelector
- 
ConsoleLauncherの様々な改善
- 
多数のバグ修正と軽微な改善 
詳細は、オンラインの 5.9.0 リリースノート を参照してください。