diff --git a/boot/command-line-runner/src/test/java/com/example/commandlinerunner/CommandlinerunnerApplicationTests.java b/boot/command-line-runner/src/test/java/com/example/commandlinerunner/CommandlinerunnerApplicationTests.java index 8ad38560..d31b56cf 100644 --- a/boot/command-line-runner/src/test/java/com/example/commandlinerunner/CommandlinerunnerApplicationTests.java +++ b/boot/command-line-runner/src/test/java/com/example/commandlinerunner/CommandlinerunnerApplicationTests.java @@ -9,33 +9,11 @@ import org.springframework.boot.ApplicationArguments; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.UseMainMethod; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(webEnvironment = WebEnvironment.NONE, useMainMethod = UseMainMethod.ALWAYS, args = "--test.args=1") -class CommandlinerunnerApplicationTests implements ApplicationContextAware { - - private ApplicationContext applicationContext; - - @Autowired - private CLR clr; - - @Override - public void setApplicationContext(ApplicationContext applicationContext) { - this.applicationContext = applicationContext; - } - - @Test - void contextIsInjected() { - assertThat(this.applicationContext).as("ApplicationContextAware").isNotNull(); - } - - @Test - void autowiringWorks() { - assertThat(this.clr).as("@Autowired field").isNotNull(); - } +class CommandlinerunnerApplicationTests { @Test void mainShouldRun() { diff --git a/ci/smoke-tests.yml b/ci/smoke-tests.yml index 39e4430c..5ec539de 100644 --- a/ci/smoke-tests.yml +++ b/ci/smoke-tests.yml @@ -4,7 +4,7 @@ groups: - batch - name: boot smoke_tests: - - actuator-webflux + - actuator-webflux - actuator-webflux-mgmt-port - actuator-webmvc - actuator-webmvc-mgmt-port @@ -79,6 +79,7 @@ groups: - rest-template - rsocket - scheduled + - tcf - transactional - transactional-event-listener - validation diff --git a/framework/tcf/README.adoc b/framework/tcf/README.adoc new file mode 100644 index 00000000..84c4b9cc --- /dev/null +++ b/framework/tcf/README.adoc @@ -0,0 +1 @@ +Tests if Spring's TestContext Framework is working diff --git a/framework/tcf/build.gradle b/framework/tcf/build.gradle new file mode 100644 index 00000000..f0ae4d37 --- /dev/null +++ b/framework/tcf/build.gradle @@ -0,0 +1,16 @@ +plugins { + id 'java' + id 'org.springframework.boot' + id 'org.springframework.aot.smoke-test' + id 'org.graalvm.buildtools.native' +} + +dependencies { + implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) + implementation("org.springframework.boot:spring-boot-starter") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + + appTestImplementation(project(":aot-smoke-test-support")) + appTestImplementation("org.awaitility:awaitility:4.2.0") +} diff --git a/framework/tcf/src/main/java/com/example/tcf/MyService.java b/framework/tcf/src/main/java/com/example/tcf/MyService.java new file mode 100644 index 00000000..bc33ab86 --- /dev/null +++ b/framework/tcf/src/main/java/com/example/tcf/MyService.java @@ -0,0 +1,7 @@ +package com.example.tcf; + +public interface MyService { + + void sayHello(); + +} diff --git a/framework/tcf/src/main/java/com/example/tcf/MyServiceConfiguration.java b/framework/tcf/src/main/java/com/example/tcf/MyServiceConfiguration.java new file mode 100644 index 00000000..154191cc --- /dev/null +++ b/framework/tcf/src/main/java/com/example/tcf/MyServiceConfiguration.java @@ -0,0 +1,14 @@ +package com.example.tcf; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration(proxyBeanMethods = false) +class MyServiceConfiguration { + + @Bean + MyService myService() { + return new MyServiceImpl(); + } + +} diff --git a/framework/tcf/src/main/java/com/example/tcf/MyServiceImpl.java b/framework/tcf/src/main/java/com/example/tcf/MyServiceImpl.java new file mode 100644 index 00000000..60350df1 --- /dev/null +++ b/framework/tcf/src/main/java/com/example/tcf/MyServiceImpl.java @@ -0,0 +1,10 @@ +package com.example.tcf; + +class MyServiceImpl implements MyService { + + @Override + public void sayHello() { + System.out.println("Hello from MyServiceImpl"); + } + +} diff --git a/framework/tcf/src/main/java/com/example/tcf/TcfApplication.java b/framework/tcf/src/main/java/com/example/tcf/TcfApplication.java new file mode 100644 index 00000000..ad94f9df --- /dev/null +++ b/framework/tcf/src/main/java/com/example/tcf/TcfApplication.java @@ -0,0 +1,13 @@ +package com.example.tcf; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class TcfApplication { + + public static void main(String[] args) { + SpringApplication.run(TcfApplication.class, args); + } + +} diff --git a/boot/command-line-runner/src/test/java/com/example/commandlinerunner/MockBeanTests.java b/framework/tcf/src/test/java/com/example/tcf/MockBeanTests.java similarity index 72% rename from boot/command-line-runner/src/test/java/com/example/commandlinerunner/MockBeanTests.java rename to framework/tcf/src/test/java/com/example/tcf/MockBeanTests.java index 482d6a82..c5df5e3c 100644 --- a/boot/command-line-runner/src/test/java/com/example/commandlinerunner/MockBeanTests.java +++ b/framework/tcf/src/test/java/com/example/tcf/MockBeanTests.java @@ -1,15 +1,14 @@ -package com.example.commandlinerunner; +package com.example.tcf; -import com.example.commandlinerunner.service.MyService; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import static org.assertj.core.api.Assertions.assertThatThrownBy; -@SpringBootTest +@SpringJUnitConfig(MyServiceConfiguration.class) class MockBeanTests { @MockBean diff --git a/framework/tcf/src/test/java/com/example/tcf/TcfApplicationTests.java b/framework/tcf/src/test/java/com/example/tcf/TcfApplicationTests.java new file mode 100644 index 00000000..7e4807d5 --- /dev/null +++ b/framework/tcf/src/test/java/com/example/tcf/TcfApplicationTests.java @@ -0,0 +1,36 @@ +package com.example.tcf; + +import org.junit.jupiter.api.Test; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringJUnitConfig(MyServiceConfiguration.class) +class TcfApplicationTests implements ApplicationContextAware { + + private ApplicationContext applicationContext; + + @Autowired + private MyService myService; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + + @Test + void contextIsInjected() { + assertThat(this.applicationContext).as("ApplicationContextAware").isNotNull(); + } + + @Test + void autowiringWorks() { + assertThat(this.myService).as("@Autowired field").isNotNull(); + assertThat(this.myService).isInstanceOf(MyServiceImpl.class); + } + +}