最新の安定バージョンについては、Spring Framework 7.0.0 を使用してください! |
Spring JUnit Jupiter テストアノテーション
以下のアノテーションは、SpringExtension および JUnit Jupiter(つまり、JUnit 5 のプログラミングモデル)と組み合わせて使用するとサポートされます。
@SpringJUnitConfig
@SpringJUnitConfig は、JUnit Jupiter の @ExtendWith(SpringExtension.class) と Spring TestContext フレームワークの @ContextConfiguration を組み合わせた合成アノテーションです。クラスレベルで @ContextConfiguration のドロップイン置換として使用できます。構成オプションに関して、@ContextConfiguration と @SpringJUnitConfig の唯一の違いは、@SpringJUnitConfig の value 属性でコンポーネントクラスを宣言できることです。
次の例は、@SpringJUnitConfig アノテーションを使用して構成クラスを指定する方法を示しています。
Java
Kotlin
@SpringJUnitConfig(TestConfig.class) (1)
class ConfigurationClassJUnitJupiterSpringTests {
// class body...
}| 1 | 構成クラスを指定します。 |
@SpringJUnitConfig(TestConfig::class) (1)
class ConfigurationClassJUnitJupiterSpringTests {
// class body...
}| 1 | 構成クラスを指定します。 |
次の例は、@SpringJUnitConfig アノテーションを使用して構成ファイルの場所を指定する方法を示しています。
Java
Kotlin
@SpringJUnitConfig(locations = "/test-config.xml") (1)
class XmlJUnitJupiterSpringTests {
// class body...
}| 1 | 構成ファイルの場所を指定します。 |
@SpringJUnitConfig(locations = ["/test-config.xml"]) (1)
class XmlJUnitJupiterSpringTests {
// class body...
}| 1 | 構成ファイルの場所を指定します。 |
詳細については、コンテキスト管理および @SpringJUnitConfig (Javadoc) および @ContextConfiguration の javadoc を参照してください。
@SpringJUnitWebConfig
@SpringJUnitWebConfig は、JUnit Jupiter の @ExtendWith(SpringExtension.class) と Spring TestContext フレームワークの @ContextConfiguration および @WebAppConfiguration を組み合わせた合成アノテーションです。クラスレベルで、@ContextConfiguration および @WebAppConfiguration のドロップイン置換として使用できます。構成オプションに関して、@ContextConfiguration と @SpringJUnitWebConfig の唯一の違いは、@SpringJUnitWebConfig の value 属性を使用してコンポーネントクラスを宣言できることです。さらに、@SpringJUnitWebConfig で resourcePath 属性を使用することによってのみ、@WebAppConfiguration から value 属性をオーバーライドできます。
次の例は、@SpringJUnitWebConfig アノテーションを使用して構成クラスを指定する方法を示しています。
Java
Kotlin
@SpringJUnitWebConfig(TestConfig.class) (1)
class ConfigurationClassJUnitJupiterSpringWebTests {
// class body...
}| 1 | 構成クラスを指定します。 |
@SpringJUnitWebConfig(TestConfig::class) (1)
class ConfigurationClassJUnitJupiterSpringWebTests {
// class body...
}| 1 | 構成クラスを指定します。 |
次の例は、@SpringJUnitWebConfig アノテーションを使用して構成ファイルの場所を指定する方法を示しています。
Java
Kotlin
@SpringJUnitWebConfig(locations = "/test-config.xml") (1)
class XmlJUnitJupiterSpringWebTests {
// class body...
}| 1 | 構成ファイルの場所を指定します。 |
@SpringJUnitWebConfig(locations = ["/test-config.xml"]) (1)
class XmlJUnitJupiterSpringWebTests {
// class body...
}| 1 | 構成ファイルの場所を指定します。 |
詳細については、コンテキスト管理、および @SpringJUnitWebConfig (Javadoc) 、@ContextConfiguration (Javadoc) 、@WebAppConfiguration (Javadoc) の javadoc を参照してください。
@TestConstructor
@TestConstructor は、テストクラスに適用して、テストクラスコンストラクターのパラメーターがテストの ApplicationContext 内のコンポーネントからどのように自動接続されるかを構成できるアノテーションです。
@TestConstructor が存在しないか、テストクラスにメタに存在する場合は、デフォルトのテストコンストラクターのオートワイヤモードが使用されます。デフォルトモードを変更する方法の詳細については、以下のヒントを参照してください。ただし、コンストラクターでの @Autowired、@jakarta.inject.Inject、または @javax.inject.Inject のローカル宣言は、@TestConstructor およびデフォルトモードの両方より優先されることに注意してください。
デフォルトのテストコンストラクターオートワイヤーモードの変更 デフォルトのテストコンストラクターのオートワイヤーモードは、 デフォルトモードは JUnit プラットフォーム構成パラメーター (英語) として設定することもできます。
|
@TestConstructor は、JUnit Jupiter で使用するために SpringExtension と組み合わせてのみサポートされます。SpringExtension は、多くの場合、自動的に登録されます (たとえば、@SpringJUnitConfig や @SpringJUnitWebConfig などのアノテーションや、Spring Boot Test のさまざまなテスト関連のアノテーションを使用する場合など)。 |
@NestedTestConfiguration
@NestedTestConfiguration は、テストクラスに適用して、内部テストクラスの囲みクラス階層内で Spring Test 構成アノテーションがどのように処理されるかを構成できるアノテーションです。
@NestedTestConfiguration がテストクラス、そのスーパー型階層、それを囲むクラス階層に存在またはメタ存在しない場合、デフォルトの外側の構成継承モードが使用されます。デフォルトモードを変更する方法の詳細については、以下のヒントを参照してください。
デフォルトの包含構成継承モードの変更 デフォルトの同封構成継承モードは |
Spring TestContext フレームワークは、次のアノテーションの @NestedTestConfiguration セマンティクスを尊重します。
@NestedTestConfiguration の使用は、通常、JUnit Jupiter の @Nested テストクラスと組み合わせた場合にのみ意味があります。ただし、Spring をサポートする他のテストフレームワークと、このアノテーションを利用するネストされたテストクラスが存在する場合があります。 |
例と詳細については、@Nested テストクラスの構成を参照してください。
@EnabledIf
@EnabledIf は、アノテーション付きの JUnit Jupiter テストクラスまたはテストメソッドが有効であり、提供された expression が true に評価される場合に実行する必要があることを通知するために使用されます。具体的には、式が Boolean.TRUE または true に等しい String (大文字小文字を無視)に評価される場合、テストは有効になります。クラスレベルで適用すると、そのクラス内のすべてのテストメソッドもデフォルトで自動的に有効になります。
式は次のいずれかです。
Spring 式言語(SpEL)式。例:
@EnabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")Spring
Environmentで使用可能なプロパティのプレースホルダー。例:@EnabledIf("${smoke.tests.enabled}")テキストリテラル。例:
@EnabledIf("true")
ただし、@EnabledIf("false") は @Disabled と同等であり、@EnabledIf("true") は論理的に無意味であるため、プロパティプレースホルダーの動的解決の結果ではないテキストリテラルはゼロの実用的な値であることに注意してください。
@EnabledIf をメタアノテーションとして使用して、カスタム合成アノテーションを作成できます。例: 次のように、カスタム @EnabledOnMac アノテーションを作成できます。
Java
Kotlin
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@EnabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Enabled on Mac OS"
)
public @interface EnabledOnMac {}@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@EnabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Enabled on Mac OS"
)
annotation class EnabledOnMac {}
|
JUnit 5.7 以降、JUnit Jupiter には |
@DisabledIf
@DisabledIf は、アノテーション付きの JUnit Jupiter テストクラスまたはテストメソッドが無効になっていることを通知するために使用され、提供された expression が true と評価される場合は実行されません。具体的には、式が Boolean.TRUE または true に等しい String (大文字と小文字を区別しない)と評価される場合、テストは無効になります。クラスレベルで適用すると、そのクラス内のすべてのテストメソッドも自動的に無効になります。
式は次のいずれかです。
Spring 式言語(SpEL)式。例:
@DisabledIf("#{systemProperties['os.name'].toLowerCase().contains('mac')}")Spring
Environmentで使用可能なプロパティのプレースホルダー。例:@DisabledIf("${smoke.tests.disabled}")テキストリテラル。例:
@DisabledIf("true")
ただし、@DisabledIf("true") は @Disabled と同等であり、@DisabledIf("false") は論理的に無意味であるため、プロパティプレースホルダーの動的解決の結果ではないテキストリテラルはゼロの実用的な値であることに注意してください。
@DisabledIf をメタアノテーションとして使用して、カスタム合成アノテーションを作成できます。例: 次のように、カスタム @DisabledOnMac アノテーションを作成できます。
Java
Kotlin
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@DisabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Disabled on Mac OS"
)
public @interface DisabledOnMac {}@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@DisabledIf(
expression = "#{systemProperties['os.name'].toLowerCase().contains('mac')}",
reason = "Disabled on Mac OS"
)
annotation class DisabledOnMac {}
|
JUnit 5.7 以降、JUnit Jupiter には |