このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Boot 4.1.1 を使用してください! |
テストユーティリティ
アプリケーションのテスト時に一般的に役立ついくつかのテストユーティリティクラスは、spring-boot の一部としてパッケージ化されています。
ConfigDataApplicationContextInitializer
ConfigDataApplicationContextInitializer (Javadoc) は、テストに適用して Spring Boot application.properties ファイルをロードできる ApplicationContextInitializer (Javadoc) です。次の例に示すように、@SpringBootTest (Javadoc) が提供する機能の完全なセットが必要ない場合に使用できます。
Java
Kotlin
import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer;
import org.springframework.test.context.ContextConfiguration;
@ContextConfiguration(classes = Config.class, initializers = ConfigDataApplicationContextInitializer.class)
class MyConfigFileTests {
// ...
}import org.springframework.boot.test.context.ConfigDataApplicationContextInitializer
import org.springframework.test.context.ContextConfiguration
@ContextConfiguration(classes = [Config::class], initializers = [ConfigDataApplicationContextInitializer::class])
class MyConfigFileTests {
// ...
}ConfigDataApplicationContextInitializer (Javadoc) のみを使用すると、@Value("${…}") インジェクションはサポートされません。その唯一のロールは、application.properties ファイルが Spring の Environment (Javadoc) にロードされるようにすることです。@Value (Javadoc) をサポートするには、PropertySourcesPlaceholderConfigurer (Javadoc) を追加で構成するか、@SpringBootTest (Javadoc) を使用して自動的に構成する必要があります。 |
TestPropertyValues
TestPropertyValues (Javadoc) を使用すると、ConfigurableEnvironment (Javadoc) または ConfigurableApplicationContext (Javadoc) にプロパティをすばやく追加できます。次のように、key=value 文字列を使用して呼び出すことができます。
Java
Kotlin
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.mock.env.MockEnvironment;
import static org.assertj.core.api.Assertions.assertThat;
class MyEnvironmentTests {
@Test
void testPropertySources() {
MockEnvironment environment = new MockEnvironment();
TestPropertyValues.of("org=Spring", "name=Boot").applyTo(environment);
assertThat(environment.getProperty("name")).isEqualTo("Boot");
}
}import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.springframework.boot.test.util.TestPropertyValues
import org.springframework.mock.env.MockEnvironment
class MyEnvironmentTests {
@Test
fun testPropertySources() {
val environment = MockEnvironment()
TestPropertyValues.of("org=Spring", "name=Boot").applyTo(environment)
assertThat(environment.getProperty("name")).isEqualTo("Boot")
}
}OutputCaptureExtension
OutputCaptureExtension (Javadoc) は、System.out (標準 Javadoc) および System.err (標準 Javadoc) 出力をキャプチャーするために使用できる JUnit Extension (英語) です。これを使用するには、次のように、@ExtendWith(OutputCaptureExtension.class) を追加し、テストクラスのコンストラクターまたはテストメソッドに引数として CapturedOutput (Javadoc) を挿入します。
Java
Kotlin
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.system.CapturedOutput;
import org.springframework.boot.test.system.OutputCaptureExtension;
import static org.assertj.core.api.Assertions.assertThat;
@ExtendWith(OutputCaptureExtension.class)
class MyOutputCaptureTests {
@Test
void testName(CapturedOutput output) {
System.out.println("Hello World!");
assertThat(output).contains("World");
}
}import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.boot.test.system.CapturedOutput
import org.springframework.boot.test.system.OutputCaptureExtension
@ExtendWith(OutputCaptureExtension::class)
class MyOutputCaptureTests {
@Test
fun testName(output: CapturedOutput?) {
println("Hello World!")
assertThat(output).contains("World")
}
}