2323import java .util .function .Supplier ;
2424import java .util .stream .Stream ;
2525
26+ import org .junit .Assume ;
2627import org .junit .jupiter .params .ParameterizedTest ;
2728import org .junit .jupiter .params .provider .MethodSource ;
2829import org .testcontainers .containers .GenericContainer ;
3233import org .testcontainers .utility .DockerImageName ;
3334import org .testcontainers .utility .MountableFile ;
3435
36+ import org .springframework .boot .system .JavaVersion ;
3537import org .springframework .util .Assert ;
3638
3739import static org .assertj .core .api .Assertions .assertThat ;
@@ -48,6 +50,7 @@ class LoaderIntegrationTests {
4850 @ ParameterizedTest
4951 @ MethodSource ("javaRuntimes" )
5052 void readUrlsWithoutWarning (JavaRuntime javaRuntime ) {
53+ javaRuntime .assumeCompatible ();
5154 try (GenericContainer <?> container = createContainer (javaRuntime )) {
5255 container .start ();
5356 System .out .println (this .output .toUtf8String ());
@@ -72,34 +75,50 @@ private File findApplication() {
7275
7376 static Stream <JavaRuntime > javaRuntimes () {
7477 List <JavaRuntime > javaRuntimes = new ArrayList <>();
75- javaRuntimes .add (JavaRuntime .openJdk ("8" ));
76- javaRuntimes .add (JavaRuntime .openJdk ("11" ));
77- javaRuntimes .add (JavaRuntime .openJdk ("17" ));
78+ javaRuntimes .add (JavaRuntime .openJdk (JavaVersion . EIGHT ));
79+ javaRuntimes .add (JavaRuntime .openJdk (JavaVersion . ELEVEN ));
80+ javaRuntimes .add (JavaRuntime .openJdk (JavaVersion . SEVENTEEN ));
7881 javaRuntimes .add (JavaRuntime .oracleJdk17 ());
7982 return javaRuntimes .stream ();
8083 }
8184
8285 static final class JavaRuntime {
8386
87+ private final String name ;
88+
89+ private final JavaVersion version ;
90+
8491 private final Supplier <GenericContainer <?>> container ;
8592
86- private JavaRuntime (Supplier <GenericContainer <?>> container ) {
93+ private JavaRuntime (String name , JavaVersion version , Supplier <GenericContainer <?>> container ) {
94+ this .name = name ;
95+ this .version = version ;
8796 this .container = container ;
8897 }
8998
99+ private void assumeCompatible () {
100+ Assume .assumeTrue (JavaVersion .getJavaVersion ().isEqualOrNewerThan (this .version ));
101+ }
102+
90103 GenericContainer <?> getContainer () {
91104 return this .container .get ();
92105 }
93106
94- static JavaRuntime openJdk (String version ) {
95- DockerImageName image = DockerImageName .parse ("bellsoft/liberica-openjdk-debian:" + version );
96- return new JavaRuntime (() -> new GenericContainer <>(image ));
107+ @ Override
108+ public String toString () {
109+ return this .name ;
110+ }
111+
112+ static JavaRuntime openJdk (JavaVersion version ) {
113+ String imageVersion = (version != JavaVersion .EIGHT ) ? version .toString () : "8" ;
114+ DockerImageName image = DockerImageName .parse ("bellsoft/liberica-openjdk-debian:" + imageVersion );
115+ return new JavaRuntime ("OpenJDK " + imageVersion , version , () -> new GenericContainer <>(image ));
97116 }
98117
99118 static JavaRuntime oracleJdk17 () {
100119 ImageFromDockerfile image = new ImageFromDockerfile ("spring-boot-loader/oracle-jdk-17" )
101120 .withFileFromFile ("Dockerfile" , new File ("src/intTest/resources/conf/oracle-jdk-17/Dockerfile" ));
102- return new JavaRuntime (() -> new GenericContainer <>(image ));
121+ return new JavaRuntime ("Oracle JDK 17" , JavaVersion . SEVENTEEN , () -> new GenericContainer <>(image ));
103122 }
104123
105124 }
0 commit comments