From 9ea41f151d6ba712938dd788b8196cf05ea520ac Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Tue, 21 May 2019 13:31:00 +0200 Subject: [PATCH] Configure JUnit platform with Spring Boot 2.2+ Closes gh-904 --- .../GradleProjectGenerationConfiguration.java | 14 ++++++++++ ...tsProjectGenerationConfigurationTests.java | 27 +++++++++++++++++++ ...leProjectGenerationConfigurationTests.java | 24 +++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java index df4b81eb..39e75b93 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfiguration.java @@ -223,6 +223,13 @@ public class GradleProjectGenerationConfiguration { projectDescription.getPlatformVersion().toString()); } + @Bean + @ConditionalOnPlatformVersion("2.2.0.M3") + public BuildCustomizer testTaskContributor() { + return (build) -> build.customizeTask("test", + (test) -> test.invoke("useJUnitPlatform")); + } + @Bean public GradleAnnotationProcessorScopeBuildCustomizer gradleAnnotationProcessorScopeBuildCustomizer() { return new GradleAnnotationProcessorScopeBuildCustomizer(); @@ -264,6 +271,13 @@ public class GradleProjectGenerationConfiguration { }; } + @Bean + @ConditionalOnPlatformVersion("2.2.0.M3") + public BuildCustomizer testTaskContributor() { + return (build) -> build.customizeTasksWithType("Test", + (test) -> test.invoke("useJUnitPlatform")); + } + } } diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java index b5c453ca..294b301c 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java @@ -55,6 +55,7 @@ import static org.assertj.core.api.Assertions.assertThat; * Tests for {@link GradleProjectGenerationConfiguration} with Kotlin DSL build system. * * @author Jean-Baptiste Nizet + * @author Stephane Nicoll */ class GradleKtsProjectGenerationConfigurationTests { @@ -155,6 +156,32 @@ class GradleKtsProjectGenerationConfigurationTests { } } + @Test + void junitPlatformIsConfiguredWithCompatibleVersion() { + ProjectDescription description = new ProjectDescription(); + description.setPlatformVersion(Version.parse("2.2.4.RELEASE")); + description.setLanguage(new JavaLanguage()); + ProjectStructure projectStructure = this.projectTester.generate(description); + assertThat(projectStructure.getRelativePathsOfProjectFiles()) + .contains("build.gradle.kts"); + List lines = projectStructure.readAllLines("build.gradle.kts"); + assertThat(lines).containsSequence("tasks.withType {", + " useJUnitPlatform()", "}"); + } + + @Test + void junitPlatformIsNotConfiguredWithIncompatibleVersion() { + ProjectDescription description = new ProjectDescription(); + description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); + description.setLanguage(new JavaLanguage()); + ProjectStructure projectStructure = this.projectTester.generate(description); + assertThat(projectStructure.getRelativePathsOfProjectFiles()) + .contains("build.gradle.kts"); + List lines = projectStructure.readAllLines("build.gradle.kts"); + assertThat(lines).doesNotContainSequence("tasks.withType {", + " useJUnitPlatform()", "}"); + } + private static String[] readAllLines(Path file) throws IOException { String content = StreamUtils.copyToString( new FileInputStream(new File(file.toString())), StandardCharsets.UTF_8); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java index 280151ac..d5648ad9 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java @@ -154,6 +154,30 @@ class GradleProjectGenerationConfigurationTests { } } + @Test + void junitPlatformIsConfiguredWithCompatibleVersion() { + ProjectDescription description = new ProjectDescription(); + description.setPlatformVersion(Version.parse("2.2.4.RELEASE")); + description.setLanguage(new JavaLanguage()); + ProjectStructure projectStructure = this.projectTester.generate(description); + assertThat(projectStructure.getRelativePathsOfProjectFiles()) + .contains("build.gradle"); + List lines = projectStructure.readAllLines("build.gradle"); + assertThat(lines).containsSequence("test {", " useJUnitPlatform()", "}"); + } + + @Test + void junitPlatformIsNotConfiguredWithIncompatibleVersion() { + ProjectDescription description = new ProjectDescription(); + description.setPlatformVersion(Version.parse("2.1.4.RELEASE")); + description.setLanguage(new JavaLanguage()); + ProjectStructure projectStructure = this.projectTester.generate(description); + assertThat(projectStructure.getRelativePathsOfProjectFiles()) + .contains("build.gradle"); + List lines = projectStructure.readAllLines("build.gradle"); + assertThat(lines).doesNotContainSequence("test {", " useJUnitPlatform()", "}"); + } + static Stream annotationProcessorScopeBuildParameters() { return Stream.of(Arguments.arguments("1.5.17.RELEASE", false), Arguments.arguments("2.0.6.RELEASE", true),