diff --git a/spring-modulith-integration-test/pom.xml b/spring-modulith-integration-test/pom.xml index bed0ab8d9..3c529317a 100644 --- a/spring-modulith-integration-test/pom.xml +++ b/spring-modulith-integration-test/pom.xml @@ -73,6 +73,12 @@ test + + org.springframework.boot + spring-boot-starter-webflux + test + + diff --git a/spring-modulith-integration-test/src/test/java/com/acme/myproject/moduleA/ApplicationModuleTestIntegrationTests.java b/spring-modulith-integration-test/src/test/java/com/acme/myproject/moduleA/ApplicationModuleTestIntegrationTests.java index 7734269a6..d7e6d2237 100644 --- a/spring-modulith-integration-test/src/test/java/com/acme/myproject/moduleA/ApplicationModuleTestIntegrationTests.java +++ b/spring-modulith-integration-test/src/test/java/com/acme/myproject/moduleA/ApplicationModuleTestIntegrationTests.java @@ -15,9 +15,16 @@ */ package com.acme.myproject.moduleA; +import static org.assertj.core.api.Assertions.*; + import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient; +import org.springframework.context.ApplicationContext; import org.springframework.modulith.test.ApplicationModuleTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.reactive.server.WebTestClient; /** * Integration tests for {@link ApplicationModuleTest}. @@ -36,4 +43,19 @@ class SomeNestedClass { @Test // GH-173 void bootstrapsSecondLevelMestMethod() {} } + + // GH-202 + @Nested + @ApplicationModuleTest(verifyAutomatically = false) + @ContextConfiguration + @AutoConfigureWebTestClient + class SampleTest { + + @Autowired ApplicationContext context; + + @Test + void registersTestWebClient() { + assertThat(context.getBean(WebTestClient.class)).isNotNull(); + } + } } diff --git a/spring-modulith-test/src/main/java/org/springframework/modulith/test/ApplicationModuleTest.java b/spring-modulith-test/src/main/java/org/springframework/modulith/test/ApplicationModuleTest.java index 28cf6d658..59f9c3df4 100644 --- a/spring-modulith-test/src/main/java/org/springframework/modulith/test/ApplicationModuleTest.java +++ b/spring-modulith-test/src/main/java/org/springframework/modulith/test/ApplicationModuleTest.java @@ -27,13 +27,12 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.autoconfigure.filter.TypeExcludeFilters; -import org.springframework.boot.test.context.SpringBootTestContextBootstrapper; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.core.annotation.AliasFor; import org.springframework.modulith.core.DependencyDepth; -import org.springframework.test.context.BootstrapWith; import org.springframework.test.context.TestConstructor; import org.springframework.test.context.TestConstructor.AutowireMode; -import org.springframework.test.context.junit.jupiter.SpringExtension; /** * Bootstraps the module containing the package of the test class annotated with {@link ApplicationModuleTest}. Will @@ -49,10 +48,10 @@ @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) -@BootstrapWith(SpringBootTestContextBootstrapper.class) +@SpringBootTest @TypeExcludeFilters(ModuleTypeExcludeFilter.class) @ImportAutoConfiguration(ModuleTestAutoConfiguration.class) -@ExtendWith({ SpringExtension.class, PublishedEventsParameterResolver.class, ScenarioParameterResolver.class }) +@ExtendWith({ PublishedEventsParameterResolver.class, ScenarioParameterResolver.class }) @TestInstance(Lifecycle.PER_CLASS) @TestConstructor(autowireMode = AutowireMode.ALL) public @interface ApplicationModuleTest { @@ -77,6 +76,14 @@ */ String[] extraIncludes() default {}; + /** + * The type of web environment to create when applicable. Defaults to {@link WebEnvironment#MOCK}. + * + * @return the type of web environment + */ + @AliasFor(annotation = SpringBootTest.class) + WebEnvironment webEnvironment() default WebEnvironment.MOCK; + public enum BootstrapMode { /**