Migrate generator tests to JUnit5

Closes gh-802
This commit is contained in:
Madhura Bhave 2019-01-23 17:45:00 -08:00
parent 4810d8aac2
commit 2816c21631
27 changed files with 355 additions and 395 deletions

View File

@ -39,8 +39,28 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit-pioneer</groupId>
<artifactId>junit-pioneer</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>

View File

@ -17,7 +17,7 @@
package io.spring.initializr.generator; package io.spring.initializr.generator;
import java.io.File; import java.io.File;
import java.io.IOException; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -28,9 +28,9 @@ import io.spring.initializr.test.generator.GradleBuildAssert;
import io.spring.initializr.test.generator.PomAssert; import io.spring.initializr.test.generator.PomAssert;
import io.spring.initializr.test.generator.ProjectAssert; import io.spring.initializr.test.generator.ProjectAssert;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.Rule; import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.rules.TemporaryFolder; import org.junitpioneer.jupiter.TempDirectory;
import org.mockito.ArgumentMatcher; import org.mockito.ArgumentMatcher;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
@ -43,11 +43,9 @@ import static org.mockito.Mockito.verify;
/** /**
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@ExtendWith(TempDirectory.class)
public abstract class AbstractProjectGeneratorTests { public abstract class AbstractProjectGeneratorTests {
@Rule
public final TemporaryFolder folder = new TemporaryFolder();
protected final ProjectGenerator projectGenerator; protected final ProjectGenerator projectGenerator;
protected final ApplicationEventPublisher eventPublisher = mock( protected final ApplicationEventPublisher eventPublisher = mock(
@ -61,8 +59,8 @@ public abstract class AbstractProjectGeneratorTests {
this.projectGenerator = projectGenerator; this.projectGenerator = projectGenerator;
} }
@Before @BeforeEach
public void setup() throws IOException { public void setup(@TempDirectory.TempDir Path folder) {
Dependency web = Dependency.withId("web"); Dependency web = Dependency.withId("web");
web.getFacets().add("web"); web.getFacets().add("web");
InitializrMetadata metadata = initializeTestMetadataBuilder() InitializrMetadata metadata = initializeTestMetadataBuilder()
@ -73,7 +71,7 @@ public abstract class AbstractProjectGeneratorTests {
this.projectGenerator.setEventPublisher(this.eventPublisher); this.projectGenerator.setEventPublisher(this.eventPublisher);
this.projectGenerator this.projectGenerator
.setRequestResolver(new ProjectRequestResolver(new ArrayList<>())); .setRequestResolver(new ProjectRequestResolver(new ArrayList<>()));
this.projectGenerator.setTmpdir(this.folder.newFolder().getAbsolutePath()); this.projectGenerator.setTmpdir(folder.toString());
} }
protected InitializrMetadataTestBuilder initializeTestMetadataBuilder() { protected InitializrMetadataTestBuilder initializeTestMetadataBuilder() {

View File

@ -23,8 +23,8 @@ import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.Type; import io.spring.initializr.metadata.Type;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import io.spring.initializr.util.TemplateRenderer; import io.spring.initializr.util.TemplateRenderer;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
@ -35,7 +35,7 @@ public class CommandLineHelpGeneratorTests {
private CommandLineHelpGenerator generator; private CommandLineHelpGenerator generator;
@Before @BeforeEach
public void init() { public void init() {
this.generator = new CommandLineHelpGenerator(new TemplateRenderer()); this.generator = new CommandLineHelpGenerator(new TemplateRenderer());
} }

View File

@ -20,7 +20,7 @@ import java.io.File;
import java.util.Map; import java.util.Map;
import io.spring.initializr.test.generator.ProjectAssert; import io.spring.initializr.test.generator.ProjectAssert;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.mockito.InOrder; import org.mockito.InOrder;
import org.mockito.Mockito; import org.mockito.Mockito;

View File

@ -16,15 +16,17 @@
package io.spring.initializr.generator; package io.spring.initializr.generator;
import java.util.stream.Stream;
import io.spring.initializr.metadata.BillOfMaterials; import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.Dependency; import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.test.generator.ProjectAssert; import io.spring.initializr.test.generator.ProjectAssert;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import io.spring.initializr.util.VersionProperty; import io.spring.initializr.util.VersionProperty;
import org.junit.Test; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.runner.RunWith; import org.junit.jupiter.params.provider.Arguments;
import org.junit.runners.Parameterized; import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
@ -33,123 +35,123 @@ import org.springframework.core.io.ClassPathResource;
* *
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@RunWith(Parameterized.class)
public class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests { public class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
@Parameterized.Parameters(name = "{0}") public static Stream<Arguments> parameters() {
public static Object[] parameters() { return Stream.of(Arguments.arguments("maven", "pom.xml"),
Object[] maven = new Object[] { "maven", "pom.xml" }; Arguments.arguments("gradle", "build.gradle"));
Object[] gradle = new Object[] { "gradle", "build.gradle" };
return new Object[] { maven, gradle };
} }
private final String build; @ParameterizedTest
@MethodSource("parameters")
private final String fileName; public void currentGenerationJarJava(String build, String fileName) {
testCurrentGenerationJar("java", build, fileName);
private final String assertFileName;
public ProjectGeneratorBuildTests(String build, String fileName) {
this.build = build;
this.fileName = fileName;
this.assertFileName = fileName + ".gen";
} }
@Test @ParameterizedTest
public void currentGenerationJarJava() { @MethodSource("parameters")
testCurrentGenerationJar("java"); public void currentGenerationJarGroovy(String build, String fileName) {
testCurrentGenerationJar("groovy", build, fileName);
} }
@Test @ParameterizedTest
public void currentGenerationJarGroovy() { @MethodSource("parameters")
testCurrentGenerationJar("groovy"); public void currentGenerationJarKotlin(String build, String fileName) {
testCurrentGenerationJar("kotlin", build, fileName);
} }
@Test private void testCurrentGenerationJar(String language, String build,
public void currentGenerationJarKotlin() { String fileName) {
testCurrentGenerationJar("kotlin"); ProjectRequest request = createProjectRequestForType(build);
}
private void testCurrentGenerationJar(String language) {
ProjectRequest request = createProjectRequest();
request.setLanguage(language); request.setLanguage(language);
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + language + "/standard/" + this.assertFileName)); "project/" + language + "/standard/" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void currentGenerationWarJava() { @MethodSource("parameters")
testCurrentGenerationWar("java"); public void currentGenerationWarJava(String build, String fileName) {
testCurrentGenerationWar("java", build, fileName);
} }
@Test @ParameterizedTest
public void currentGenerationWarGroovy() { @MethodSource("parameters")
testCurrentGenerationWar("groovy"); public void currentGenerationWarGroovy(String build, String fileName) {
testCurrentGenerationWar("groovy", build, fileName);
} }
@Test @ParameterizedTest
public void currentGenerationWarKotlin() { @MethodSource("parameters")
testCurrentGenerationWar("kotlin"); public void currentGenerationWarKotlin(String build, String fileName) {
testCurrentGenerationWar("kotlin", build, fileName);
} }
private void testCurrentGenerationWar(String language) { private void testCurrentGenerationWar(String language, String build,
ProjectRequest request = createProjectRequest("web"); String fileName) {
ProjectRequest request = createProjectRequestForType(build, "web");
request.setPackaging("war"); request.setPackaging("war");
request.setLanguage(language); request.setLanguage(language);
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + language + "/standard/war-" + this.assertFileName)); "project/" + language + "/standard/war-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void previousGenerationJarJava() { @MethodSource("parameters")
testPreviousGenerationJar("java"); public void previousGenerationJarJava(String build, String fileName) {
testPreviousGenerationJar("java", build, fileName);
} }
@Test @ParameterizedTest
public void previousGenerationJarGroovy() { @MethodSource("parameters")
testPreviousGenerationJar("groovy"); public void previousGenerationJarGroovy(String build, String fileName) {
testPreviousGenerationJar("groovy", build, fileName);
} }
@Test @ParameterizedTest
public void previousGenerationJarKotlin() { @MethodSource("parameters")
testPreviousGenerationJar("kotlin"); public void previousGenerationJarKotlin(String build, String fileName) {
testPreviousGenerationJar("kotlin", build, fileName);
} }
private void testPreviousGenerationJar(String language) { private void testPreviousGenerationJar(String language, String build,
ProjectRequest request = createProjectRequest(); String fileName) {
ProjectRequest request = createProjectRequestForType(build);
request.setLanguage(language); request.setLanguage(language);
request.setBootVersion("1.5.18.RELEASE"); request.setBootVersion("1.5.18.RELEASE");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + language + "/previous/" + this.assertFileName)); "project/" + language + "/previous/" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void kotlinJava11() { @MethodSource("parameters")
ProjectRequest request = createProjectRequest(); public void kotlinJava11(String build, String fileName) {
ProjectRequest request = createProjectRequestForType(build);
request.setLanguage("kotlin"); request.setLanguage("kotlin");
request.setJavaVersion("11"); request.setJavaVersion("11");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + this.build + "/kotlin-java11-" + this.assertFileName)); "project/" + build + "/kotlin-java11-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void versionOverride() { @MethodSource("parameters")
ProjectRequest request = createProjectRequest("web"); public void versionOverride(String build, String fileName) {
ProjectRequest request = createProjectRequestForType(build, "web");
request.getBuildProperties().getVersions().put( request.getBuildProperties().getVersions().put(
VersionProperty.of("spring-foo.version", false), () -> "0.1.0.RELEASE"); VersionProperty.of("spring-foo.version", false), () -> "0.1.0.RELEASE");
request.getBuildProperties().getVersions() request.getBuildProperties().getVersions()
.put(VersionProperty.of("spring-bar.version"), () -> "0.2.0.RELEASE"); .put(VersionProperty.of("spring-bar.version"), () -> "0.2.0.RELEASE");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + this.build + "/version-override-" + this.assertFileName)); "project/" + build + "/version-override-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void bomWithVersionProperty() { @MethodSource("parameters")
public void bomWithVersionProperty(String build, String fileName) {
Dependency foo = Dependency.withId("foo", "org.acme", "foo"); Dependency foo = Dependency.withId("foo", "org.acme", "foo");
foo.setBom("the-bom"); foo.setBom("the-bom");
BillOfMaterials bom = BillOfMaterials.create("org.acme", "foo-bom", "1.3.3"); BillOfMaterials bom = BillOfMaterials.create("org.acme", "foo-bom", "1.3.3");
@ -157,28 +159,31 @@ public class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("foo", foo).addBom("the-bom", bom).build(); .addDependencyGroup("foo", foo).addBom("the-bom", bom).build();
applyMetadata(metadata); applyMetadata(metadata);
ProjectRequest request = createProjectRequest("foo"); ProjectRequest request = createProjectRequestForType(build, "foo");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + this.build + "/bom-property-" + this.assertFileName)); "project/" + build + "/bom-property-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void compileOnlyDependency() { @MethodSource("parameters")
public void compileOnlyDependency(String build, String fileName) {
Dependency foo = Dependency.withId("foo", "org.acme", "foo"); Dependency foo = Dependency.withId("foo", "org.acme", "foo");
foo.setScope(Dependency.SCOPE_COMPILE_ONLY); foo.setScope(Dependency.SCOPE_COMPILE_ONLY);
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("core", "web", "data-jpa") .addDependencyGroup("core", "web", "data-jpa")
.addDependencyGroup("foo", foo).build(); .addDependencyGroup("foo", foo).build();
applyMetadata(metadata); applyMetadata(metadata);
ProjectRequest request = createProjectRequest("foo", "web", "data-jpa"); ProjectRequest request = createProjectRequestForType(build, "foo", "web",
"data-jpa");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource("project/" project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource("project/"
+ this.build + "/compile-only-dependency-" + this.assertFileName)); + build + "/compile-only-dependency-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void annotationProcessorDependency() { @MethodSource("parameters")
public void annotationProcessorDependency(String build, String fileName) {
Dependency annotationProcessor = Dependency.withId("configuration-processor", Dependency annotationProcessor = Dependency.withId("configuration-processor",
"org.springframework.boot", "spring-boot-configuration-processor"); "org.springframework.boot", "spring-boot-configuration-processor");
annotationProcessor.setScope(Dependency.SCOPE_ANNOTATION_PROCESSOR); annotationProcessor.setScope(Dependency.SCOPE_ANNOTATION_PROCESSOR);
@ -187,16 +192,18 @@ public class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
.addDependencyGroup("configuration-processor", annotationProcessor) .addDependencyGroup("configuration-processor", annotationProcessor)
.build(); .build();
applyMetadata(metadata); applyMetadata(metadata);
ProjectRequest request = createProjectRequest("configuration-processor", "web", ProjectRequest request = createProjectRequestForType(build,
"data-jpa"); "configuration-processor", "web", "data-jpa");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName) project.sourceCodeAssert(fileName)
.equalsTo(new ClassPathResource("project/" + this.build .equalsTo(new ClassPathResource(
+ "/annotation-processor-dependency-" + this.assertFileName)); "project/" + build + "/annotation-processor-dependency-"
+ getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void bomWithOrdering() { @MethodSource("parameters")
public void bomWithOrdering(String build, String fileName) {
Dependency foo = Dependency.withId("foo", "org.acme", "foo"); Dependency foo = Dependency.withId("foo", "org.acme", "foo");
foo.setBom("foo-bom"); foo.setBom("foo-bom");
BillOfMaterials barBom = BillOfMaterials.create("org.acme", "bar-bom", "1.0"); BillOfMaterials barBom = BillOfMaterials.create("org.acme", "bar-bom", "1.0");
@ -213,14 +220,15 @@ public class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
.addDependencyGroup("foo", foo).addBom("foo-bom", fooBom) .addDependencyGroup("foo", foo).addBom("foo-bom", fooBom)
.addBom("bar-bom", barBom).addBom("biz-bom", bizBom).build(); .addBom("bar-bom", barBom).addBom("biz-bom", bizBom).build();
applyMetadata(metadata); applyMetadata(metadata);
ProjectRequest request = createProjectRequest("foo"); ProjectRequest request = createProjectRequestForType(build, "foo");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + this.build + "/bom-ordering-" + this.assertFileName)); "project/" + build + "/bom-ordering-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void repositories() { @MethodSource("parameters")
public void repositories(String build, String fileName) {
Dependency foo = Dependency.withId("foo", "org.acme", "foo"); Dependency foo = Dependency.withId("foo", "org.acme", "foo");
foo.setRepository("foo-repository"); foo.setRepository("foo-repository");
Dependency bar = Dependency.withId("bar", "org.acme", "bar"); Dependency bar = Dependency.withId("bar", "org.acme", "bar");
@ -233,30 +241,34 @@ public class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
true) true)
.build(); .build();
applyMetadata(metadata); applyMetadata(metadata);
ProjectRequest request = createProjectRequest("foo", "bar"); ProjectRequest request = createProjectRequestForType(build, "foo", "bar");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource( project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource(
"project/" + this.build + "/repositories-" + this.assertFileName)); "project/" + build + "/repositories-" + getAssertFileName(fileName)));
} }
@Test @ParameterizedTest
public void repositoriesMilestone() { @MethodSource("parameters")
public void repositoriesMilestone(String build, String fileName) {
Dependency foo = Dependency.withId("foo", "org.acme", "foo"); Dependency foo = Dependency.withId("foo", "org.acme", "foo");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("test", foo).build(); .addDependencyGroup("test", foo).build();
applyMetadata(metadata); applyMetadata(metadata);
ProjectRequest request = createProjectRequest("foo"); ProjectRequest request = createProjectRequestForType(build, "foo");
request.setBootVersion("2.2.0.M1"); request.setBootVersion("2.2.0.M1");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert(this.fileName).equalsTo(new ClassPathResource("project/" project.sourceCodeAssert(fileName).equalsTo(new ClassPathResource("project/"
+ this.build + "/repositories-milestone-" + this.assertFileName)); + build + "/repositories-milestone-" + getAssertFileName(fileName)));
} }
@Override public ProjectRequest createProjectRequestForType(String build, String... styles) {
public ProjectRequest createProjectRequest(String... styles) {
ProjectRequest request = super.createProjectRequest(styles); ProjectRequest request = super.createProjectRequest(styles);
request.setType(this.build + "-project"); request.setType(build + "-project");
return request; return request;
} }
private String getAssertFileName(String fileName) {
return fileName + ".gen";
}
} }

View File

@ -16,10 +16,12 @@
package io.spring.initializr.generator; package io.spring.initializr.generator;
import java.util.stream.Stream;
import io.spring.initializr.test.generator.ProjectAssert; import io.spring.initializr.test.generator.ProjectAssert;
import org.junit.Test; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.runner.RunWith; import org.junit.jupiter.params.provider.Arguments;
import org.junit.runners.Parameterized; import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
@ -28,117 +30,117 @@ import org.springframework.core.io.ClassPathResource;
* *
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@RunWith(Parameterized.class)
public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests { public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests {
@Parameterized.Parameters(name = "{0}") public static Stream<Arguments> parameters() {
public static Object[] parameters() { return Stream.of(Arguments.arguments("java", "java"),
Object[] java = new Object[] { "java", "java" }; Arguments.arguments("groovy", "groovy"),
Object[] groovy = new Object[] { "groovy", "groovy" }; Arguments.arguments("kotlin", "kt"));
Object[] kotlin = new Object[] { "kotlin", "kt" };
return new Object[] { java, groovy, kotlin };
} }
private final String language; @ParameterizedTest
@MethodSource("parameters")
private final String extension; public void currentGenerationJar(String language, String extension) {
private final String expectedExtension;
public ProjectGeneratorLanguageTests(String language, String extension) {
this.language = language;
this.extension = extension;
this.expectedExtension = extension + ".gen";
}
@Test
public void currentGenerationJar() {
ProjectRequest request = createProjectRequest(); ProjectRequest request = createProjectRequest();
request.setLanguage(this.language); request.setLanguage(language);
generateProject(request).isGenericProject(ProjectAssert.DEFAULT_PACKAGE_NAME, generateProject(request).isGenericProject(ProjectAssert.DEFAULT_PACKAGE_NAME,
ProjectAssert.DEFAULT_APPLICATION_NAME, this.language, this.extension); ProjectAssert.DEFAULT_APPLICATION_NAME, language, extension);
} }
@Test @ParameterizedTest
public void currentGenerationWar() { @MethodSource("parameters")
public void currentGenerationWar(String language, String extension) {
ProjectRequest request = createProjectRequest("web"); ProjectRequest request = createProjectRequest("web");
request.setLanguage(this.language); request.setLanguage(language);
request.setPackaging("war"); request.setPackaging("war");
generateProject(request).isGenericWarProject(ProjectAssert.DEFAULT_PACKAGE_NAME, generateProject(request).isGenericWarProject(ProjectAssert.DEFAULT_PACKAGE_NAME,
ProjectAssert.DEFAULT_APPLICATION_NAME, this.language, this.extension); ProjectAssert.DEFAULT_APPLICATION_NAME, language, extension);
} }
@Test @ParameterizedTest
public void currentGenerationMainClass() { @MethodSource("parameters")
public void currentGenerationMainClass(String language, String extension) {
ProjectRequest request = createProjectRequest(); ProjectRequest request = createProjectRequest();
request.setLanguage(this.language); request.setLanguage(language);
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert("src/main/" + this.language project.sourceCodeAssert(
+ "/com/example/demo/DemoApplication." + this.extension) "src/main/" + language + "/com/example/demo/DemoApplication." + extension)
.equalsTo(new ClassPathResource("project/" + this.language .equalsTo(new ClassPathResource(
+ "/standard/DemoApplication." + this.expectedExtension)); "project/" + language + "/standard/DemoApplication."
+ getExpectedExtension(extension)));
} }
@Test @ParameterizedTest
public void previousGenerationMainClass() { @MethodSource("parameters")
public void previousGenerationMainClass(String language, String extension) {
ProjectRequest request = createProjectRequest(); ProjectRequest request = createProjectRequest();
request.setLanguage(this.language); request.setLanguage(language);
request.setBootVersion("1.5.18.RELEASE"); request.setBootVersion("1.5.18.RELEASE");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert("src/main/" + this.language project.sourceCodeAssert(
+ "/com/example/demo/DemoApplication." + this.extension) "src/main/" + language + "/com/example/demo/DemoApplication." + extension)
.equalsTo(new ClassPathResource("project/" + this.language + "/previous/" .equalsTo(new ClassPathResource("project/" + language + "/previous/"
+ "/DemoApplication." + this.expectedExtension)); + "/DemoApplication." + getExpectedExtension(extension)));
} }
@Test @ParameterizedTest
public void currentGenerationTestClass() { @MethodSource("parameters")
public void currentGenerationTestClass(String language, String extension) {
ProjectRequest request = createProjectRequest(); ProjectRequest request = createProjectRequest();
request.setLanguage(this.language); request.setLanguage(language);
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert("src/test/" + this.language project.sourceCodeAssert("src/test/" + language
+ "/com/example/demo/DemoApplicationTests." + this.extension) + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + this.language .equalsTo(new ClassPathResource(
+ "/standard/DemoApplicationTests." + this.expectedExtension)); "project/" + language + "/standard/DemoApplicationTests."
+ getExpectedExtension(extension)));
} }
@Test @ParameterizedTest
public void currentGenerationTestClassWeb() { @MethodSource("parameters")
public void currentGenerationTestClassWeb(String language, String extension) {
ProjectRequest request = createProjectRequest("web"); ProjectRequest request = createProjectRequest("web");
request.setLanguage(this.language); request.setLanguage(language);
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert("src/test/" + this.language project.sourceCodeAssert("src/test/" + language
+ "/com/example/demo/DemoApplicationTests." + this.extension) + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + this.language .equalsTo(new ClassPathResource(
+ "/standard/DemoApplicationTestsWeb." + this.expectedExtension)); "project/" + language + "/standard/DemoApplicationTestsWeb."
+ getExpectedExtension(extension)));
} }
@Test @ParameterizedTest
public void currentGenerationServletInitializer() { @MethodSource("parameters")
public void currentGenerationServletInitializer(String language, String extension) {
ProjectRequest request = createProjectRequest(); ProjectRequest request = createProjectRequest();
request.setLanguage(this.language); request.setLanguage(language);
request.setPackaging("war"); request.setPackaging("war");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert("src/main/" + this.language project.sourceCodeAssert("src/main/" + language
+ "/com/example/demo/ServletInitializer." + this.extension) + "/com/example/demo/ServletInitializer." + extension)
.equalsTo(new ClassPathResource("project/" + this.language + "/standard/" .equalsTo(new ClassPathResource("project/" + language + "/standard/"
+ "ServletInitializer." + this.expectedExtension)); + "ServletInitializer." + getExpectedExtension(extension)));
} }
@Test @ParameterizedTest
public void previousGenerationServletInitializer() { @MethodSource("parameters")
public void previousGenerationServletInitializer(String language, String extension) {
ProjectRequest request = createProjectRequest(); ProjectRequest request = createProjectRequest();
request.setLanguage(this.language); request.setLanguage(language);
request.setBootVersion("1.5.18.RELEASE"); request.setBootVersion("1.5.18.RELEASE");
request.setPackaging("war"); request.setPackaging("war");
ProjectAssert project = generateProject(request); ProjectAssert project = generateProject(request);
project.sourceCodeAssert("src/main/" + this.language project.sourceCodeAssert("src/main/" + language
+ "/com/example/demo/ServletInitializer." + this.extension) + "/com/example/demo/ServletInitializer." + extension)
.equalsTo(new ClassPathResource("project/" + this.language + "/previous/" .equalsTo(new ClassPathResource("project/" + language + "/previous/"
+ "ServletInitializer." + this.expectedExtension)); + "ServletInitializer." + getExpectedExtension(extension)));
}
private String getExpectedExtension(String extension) {
return extension + ".gen";
} }
} }

View File

@ -24,14 +24,13 @@ import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.test.generator.ProjectAssert; import io.spring.initializr.test.generator.ProjectAssert;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import io.spring.initializr.util.VersionProperty; import io.spring.initializr.util.VersionProperty;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.fail; import static org.assertj.core.api.Assertions.fail;
/** /**
@ -42,9 +41,6 @@ import static org.assertj.core.api.Assertions.fail;
*/ */
public class ProjectGeneratorTests extends AbstractProjectGeneratorTests { public class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Override @Override
protected InitializrMetadataTestBuilder initializeTestMetadataBuilder() { protected InitializrMetadataTestBuilder initializeTestMetadataBuilder() {
return InitializrMetadataTestBuilder.withBasicDefaults(); return InitializrMetadataTestBuilder.withBasicDefaults();
@ -786,18 +782,18 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
public void invalidProjectTypeMavenPom() { public void invalidProjectTypeMavenPom() {
ProjectRequest request = createProjectRequest("web"); ProjectRequest request = createProjectRequest("web");
request.setType("gradle-build"); request.setType("gradle-build");
this.thrown.expect(InvalidProjectRequestException.class); assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expectMessage("gradle-build"); .isThrownBy(() -> this.projectGenerator.generateMavenPom(request))
this.projectGenerator.generateMavenPom(request); .withMessageContaining("gradle-build");
} }
@Test @Test
public void invalidProjectTypeGradleBuild() { public void invalidProjectTypeGradleBuild() {
ProjectRequest request = createProjectRequest("web"); ProjectRequest request = createProjectRequest("web");
request.setType("maven-build"); request.setType("maven-build");
this.thrown.expect(InvalidProjectRequestException.class); assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expectMessage("maven-build"); .isThrownBy(() -> this.projectGenerator.generateGradleBuild(request))
this.projectGenerator.generateGradleBuild(request); .withMessageContaining("maven-build");
} }
@Test @Test
@ -860,9 +856,9 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
ProjectRequest request = createProjectRequest("web"); ProjectRequest request = createProjectRequest("web");
request.setType("maven-project"); request.setType("maven-project");
request.setBootVersion("1.2.3.M4"); request.setBootVersion("1.2.3.M4");
this.thrown.expect(InvalidProjectRequestException.class); assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expectMessage("1.2.3.M4"); .isThrownBy(() -> this.projectGenerator.generateMavenPom(request))
this.projectGenerator.generateMavenPom(request); .withMessageContaining("1.2.3.M4");
} }
@Test @Test

View File

@ -24,8 +24,8 @@ import java.util.Map;
import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.BeanWrapperImpl;
@ -45,7 +45,7 @@ public class ProjectRequestResolverTests {
final GenericProjectRequestPostProcessor processor = new GenericProjectRequestPostProcessor(); final GenericProjectRequestPostProcessor processor = new GenericProjectRequestPostProcessor();
@Before @BeforeEach
public void setup() { public void setup() {
this.postProcessors.add(this.processor); this.postProcessors.add(this.processor);
} }

View File

@ -24,20 +24,16 @@ import io.spring.initializr.metadata.Dependency.Mapping;
import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.InitializrMetadataBuilder; import io.spring.initializr.metadata.InitializrMetadataBuilder;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/** /**
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
public class ProjectRequestTests { public class ProjectRequestTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
private InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() private InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build(); .build();
@ -115,11 +111,9 @@ public class ProjectRequestTests {
.addDependencyGroup("code", "org.foo:bar").build(); .addDependencyGroup("code", "org.foo:bar").build();
ProjectRequest request = initProjectRequest(); ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("org.foo:bar", "foo-bar")); request.getStyle().addAll(Arrays.asList("org.foo:bar", "foo-bar"));
assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expect(InvalidProjectRequestException.class); .isThrownBy(() -> request.resolve(this.metadata))
this.thrown.expectMessage("foo-bar"); .withMessageContaining("foo-bar");
request.resolve(this.metadata);
assertThat(request.getResolvedDependencies()).hasSize(1);
} }
@Test @Test
@ -128,11 +122,9 @@ public class ProjectRequestTests {
.addDependencyGroup("code", "org.foo:bar").build(); .addDependencyGroup("code", "org.foo:bar").build();
ProjectRequest request = initProjectRequest(); ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:acme"); // does not exist request.getStyle().add("org.foo:acme"); // does not exist
assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expect(InvalidProjectRequestException.class); .isThrownBy(() -> request.resolve(this.metadata))
this.thrown.expectMessage("org.foo:acme"); .withMessageContaining("org.foo:acme");
request.resolve(this.metadata);
assertThat(request.getResolvedDependencies()).hasSize(1);
} }
@Test @Test
@ -156,11 +148,10 @@ public class ProjectRequestTests {
ProjectRequest request = initProjectRequest(); ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:bar"); request.getStyle().add("org.foo:bar");
request.setBootVersion("0.9.9.RELEASE"); request.setBootVersion("0.9.9.RELEASE");
assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expect(InvalidProjectRequestException.class); .isThrownBy(() -> request.resolve(metadata))
this.thrown.expectMessage("org.foo:bar"); .withMessageContaining("org.foo:bar")
this.thrown.expectMessage("0.9.9.RELEASE"); .withMessageContaining("0.9.9.RELEASE");
request.resolve(metadata);
} }
@Test @Test
@ -210,10 +201,9 @@ public class ProjectRequestTests {
public void resolveUnknownType() { public void resolveUnknownType() {
ProjectRequest request = initProjectRequest(); ProjectRequest request = initProjectRequest();
request.setType("foo-project"); request.setType("foo-project");
assertThatExceptionOfType(InvalidProjectRequestException.class)
this.thrown.expect(InvalidProjectRequestException.class); .isThrownBy(() -> request.resolve(this.metadata))
this.thrown.expectMessage("foo-project"); .withMessageContaining("foo-project");
request.resolve(this.metadata);
} }
@Test @Test

View File

@ -21,20 +21,16 @@ import java.util.Arrays;
import io.spring.initializr.metadata.BillOfMaterials.Mapping; import io.spring.initializr.metadata.BillOfMaterials.Mapping;
import io.spring.initializr.util.Version; import io.spring.initializr.util.Version;
import io.spring.initializr.util.VersionParser; import io.spring.initializr.util.VersionParser;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
/** /**
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
public class BillOfMaterialsTests { public class BillOfMaterialsTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void resolveSimpleBom() { public void resolveSimpleBom() {
BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0"); BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "1.0.0");
@ -126,10 +122,9 @@ public class BillOfMaterialsTests {
bom.getMappings().add(Mapping.create("[1.2.0.RELEASE,1.3.0.M1)", "1.1.0")); bom.getMappings().add(Mapping.create("[1.2.0.RELEASE,1.3.0.M1)", "1.1.0"));
bom.getMappings().add(Mapping.create("[1.3.0.M1, 1.4.0.M1)", "1.2.0")); bom.getMappings().add(Mapping.create("[1.3.0.M1, 1.4.0.M1)", "1.2.0"));
bom.validate(); bom.validate();
assertThatIllegalStateException()
this.thrown.expect(IllegalStateException.class); .isThrownBy(() -> bom.resolve(Version.parse("1.4.1.RELEASE")))
this.thrown.expectMessage("1.4.1.RELEASE"); .withMessageContaining("1.4.1.RELEASE");
bom.resolve(Version.parse("1.4.1.RELEASE"));
} }
@Test @Test

View File

@ -16,11 +16,10 @@
package io.spring.initializr.metadata; package io.spring.initializr.metadata;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
/** /**
* Tests for {@link DependenciesCapability}. * Tests for {@link DependenciesCapability}.
@ -29,9 +28,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class DependenciesCapabilityTests { public class DependenciesCapabilityTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void indexedDependencies() { public void indexedDependencies() {
Dependency dependency = Dependency.withId("first"); Dependency dependency = Dependency.withId("first");
@ -51,10 +47,8 @@ public class DependenciesCapabilityTests {
Dependency dependency2 = Dependency.withId("conflict"); Dependency dependency2 = Dependency.withId("conflict");
DependenciesCapability capability = createDependenciesCapability("foo", DependenciesCapability capability = createDependenciesCapability("foo",
dependency, dependency2); dependency, dependency2);
assertThatIllegalArgumentException().isThrownBy(capability::validate)
this.thrown.expect(IllegalArgumentException.class); .withMessageContaining("conflict");
this.thrown.expectMessage("conflict");
capability.validate();
} }
@Test @Test
@ -65,7 +59,6 @@ public class DependenciesCapabilityTests {
DependenciesCapability capability = createDependenciesCapability("foo", DependenciesCapability capability = createDependenciesCapability("foo",
dependency); dependency);
capability.validate(); capability.validate();
assertThat(capability.get("first")).isSameAs(dependency); assertThat(capability.get("first")).isSameAs(dependency);
assertThat(capability.get("alias1")).isSameAs(dependency); assertThat(capability.get("alias1")).isSameAs(dependency);
assertThat(capability.get("alias2")).isSameAs(dependency); assertThat(capability.get("alias2")).isSameAs(dependency);
@ -81,10 +74,8 @@ public class DependenciesCapabilityTests {
DependenciesCapability capability = new DependenciesCapability(); DependenciesCapability capability = new DependenciesCapability();
capability.getContent().add(createDependencyGroup("foo", dependency)); capability.getContent().add(createDependencyGroup("foo", dependency));
capability.getContent().add(createDependencyGroup("bar", dependency2)); capability.getContent().add(createDependencyGroup("bar", dependency2));
assertThatIllegalArgumentException().isThrownBy(capability::validate)
this.thrown.expect(IllegalArgumentException.class); .withMessageContaining("alias2");
this.thrown.expectMessage("alias2");
capability.validate();
} }
@Test @Test

View File

@ -20,11 +20,11 @@ import java.util.Arrays;
import io.spring.initializr.util.Version; import io.spring.initializr.util.Version;
import io.spring.initializr.util.VersionParser; import io.spring.initializr.util.VersionParser;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
/** /**
* Tests for {@link Dependency}. * Tests for {@link Dependency}.
@ -33,9 +33,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class DependencyTests { public class DependencyTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void createRootSpringBootStarter() { public void createRootSpringBootStarter() {
Dependency d = new Dependency(); Dependency d = new Dependency();
@ -95,59 +92,53 @@ public class DependencyTests {
@Test @Test
public void invalidDependency() { public void invalidDependency() {
this.thrown.expect(InvalidInitializrMetadataException.class); assertThatExceptionOfType(InvalidInitializrMetadataException.class)
new Dependency().resolve(); .isThrownBy(() -> new Dependency().resolve());
} }
@Test @Test
public void invalidDependencyScope() { public void invalidDependencyScope() {
Dependency dependency = Dependency.withId("web"); Dependency dependency = Dependency.withId("web");
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
.isThrownBy(() -> dependency.setScope("whatever"));
this.thrown.expect(InvalidInitializrMetadataException.class);
dependency.setScope("whatever");
} }
@Test @Test
public void invalidSpringBootRange() { public void invalidSpringBootRange() {
Dependency dependency = Dependency.withId("web"); Dependency dependency = Dependency.withId("web");
dependency.setVersionRange("A.B.C"); dependency.setVersionRange("A.B.C");
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(dependency::resolve).withMessageContaining("A.B.C");
this.thrown.expectMessage("A.B.C");
dependency.resolve();
} }
@Test @Test
public void invalidIdFormatTooManyColons() { public void invalidIdFormatTooManyColons() {
Dependency dependency = Dependency.withId("org.foo:bar:1.0:test:external"); Dependency dependency = Dependency.withId("org.foo:bar:1.0:test:external");
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(dependency::resolve);
dependency.resolve();
} }
@Test @Test
public void invalidLink() { public void invalidLink() {
Dependency dependency = Dependency.withId("foo"); Dependency dependency = Dependency.withId("foo");
dependency.getLinks().add(Link.create(null, "https://example.com")); dependency.getLinks().add(Link.create(null, "https://example.com"));
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(dependency::resolve);
dependency.resolve();
} }
@Test @Test
public void generateIdWithNoGroupId() { public void generateIdWithNoGroupId() {
Dependency dependency = new Dependency(); Dependency dependency = new Dependency();
dependency.setArtifactId("bar"); dependency.setArtifactId("bar");
this.thrown.expect(IllegalArgumentException.class); assertThatIllegalArgumentException().isThrownBy(dependency::generateId);
dependency.generateId();
} }
@Test @Test
public void generateIdWithNoArtifactId() { public void generateIdWithNoArtifactId() {
Dependency dependency = new Dependency(); Dependency dependency = new Dependency();
dependency.setGroupId("foo"); dependency.setGroupId("foo");
this.thrown.expect(IllegalArgumentException.class); assertThatIllegalArgumentException().isThrownBy(dependency::generateId);
dependency.generateId();
} }
@Test @Test
@ -163,9 +154,8 @@ public class DependencyTests {
Dependency dependency = Dependency.withId("web"); Dependency dependency = Dependency.withId("web");
dependency.getMappings() dependency.getMappings()
.add(Dependency.Mapping.create("foo-bar", null, null, "0.1.0.RELEASE")); .add(Dependency.Mapping.create("foo-bar", null, null, "0.1.0.RELEASE"));
this.thrown.expect(InvalidInitializrMetadataException.class); assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expectMessage("foo-bar"); .isThrownBy(dependency::resolve).withMessageContaining("foo-bar");
dependency.resolve();
} }
@Test @Test

View File

@ -18,7 +18,7 @@ package io.spring.initializr.metadata;
import io.spring.initializr.metadata.InitializrConfiguration.Env.Kotlin; import io.spring.initializr.metadata.InitializrConfiguration.Env.Kotlin;
import io.spring.initializr.util.Version; import io.spring.initializr.util.Version;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -20,7 +20,7 @@ import java.net.URL;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import org.junit.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.context.properties.bind.Binder;

View File

@ -23,20 +23,16 @@ import io.spring.initializr.metadata.BillOfMaterials.Mapping;
import io.spring.initializr.metadata.InitializrConfiguration.Env.Kotlin; import io.spring.initializr.metadata.InitializrConfiguration.Env.Kotlin;
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder; import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder;
import io.spring.initializr.util.Version; import io.spring.initializr.util.Version;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/** /**
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
public class InitializrMetadataTests { public class InitializrMetadataTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void invalidBom() { public void invalidBom() {
Dependency foo = Dependency.withId("foo", "org.acme", "foo"); Dependency foo = Dependency.withId("foo", "org.acme", "foo");
@ -44,11 +40,9 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("my-bom", "org.acme", "foo", "1.2.3") .withDefaults().addBom("my-bom", "org.acme", "foo", "1.2.3")
.addDependencyGroup("test", foo); .addDependencyGroup("test", foo);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build).withMessageContaining("foo-bom")
this.thrown.expectMessage("foo-bom"); .withMessageContaining("my-bom");
this.thrown.expectMessage("my-bom");
builder.build();
} }
@Test @Test
@ -59,11 +53,9 @@ public class InitializrMetadataTests {
.withDefaults() .withDefaults()
.addRepository("my-repo", "repo", "http://example.com/repo", true) .addRepository("my-repo", "repo", "http://example.com/repo", true)
.addDependencyGroup("test", foo); .addDependencyGroup("test", foo);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build).withMessageContaining("foo-repo")
this.thrown.expectMessage("foo-repo"); .withMessageContaining("my-repo");
this.thrown.expectMessage("my-repo");
builder.build();
} }
@Test @Test
@ -72,11 +64,9 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("foo-bom", bom); .withDefaults().addBom("foo-bom", bom);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build).withMessageContaining("No version")
this.thrown.expectMessage("No version"); .withMessageContaining("foo-bom");
this.thrown.expectMessage("foo-bom");
builder.build();
} }
@Test @Test
@ -87,11 +77,10 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("foo-bom", bom); .withDefaults().addBom("foo-bom", bom);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build)
this.thrown.expectMessage("invalid repository id foo-repo"); .withMessageContaining("invalid repository id foo-repo")
this.thrown.expectMessage("foo-bom"); .withMessageContaining("foo-bom");
builder.build();
} }
@Test @Test
@ -104,11 +93,10 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("foo-bom", bom).addBom("bar-bom", barBom); .withDefaults().addBom("foo-bom", bom).addBom("bar-bom", barBom);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build)
this.thrown.expectMessage("invalid additional bom"); .withMessageContaining("invalid additional bom")
this.thrown.expectMessage("biz-bom"); .withMessageContaining("biz-bom");
builder.build();
} }
@Test @Test
@ -119,11 +107,9 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("foo-bom", bom); .withDefaults().addBom("foo-bom", bom);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build).withMessageContaining("FOO_BAR")
this.thrown.expectMessage("FOO_BAR"); .withMessageContaining("foo-bom");
this.thrown.expectMessage("foo-bom");
builder.build();
} }
@Test @Test
@ -136,12 +122,10 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("foo-bom", bom); .withDefaults().addBom("foo-bom", bom);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build)
this.thrown.expectMessage("invalid repository id foo-repo"); .withMessageContaining("invalid repository id foo-repo")
this.thrown.expectMessage("1.3.0.M2"); .withMessageContaining("1.3.0.M2").withMessageContaining("foo-bom");
this.thrown.expectMessage("foo-bom");
builder.build();
} }
@Test @Test
@ -154,12 +138,10 @@ public class InitializrMetadataTests {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().addBom("foo-bom", bom); .withDefaults().addBom("foo-bom", bom);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build)
this.thrown.expectMessage("invalid additional bom"); .withMessageContaining("invalid additional bom")
this.thrown.expectMessage("1.3.0.M2"); .withMessageContaining("1.3.0.M2").withMessageContaining("bar-bom");
this.thrown.expectMessage("bar-bom");
builder.build();
} }
@Test @Test
@ -205,11 +187,9 @@ public class InitializrMetadataTests {
public void invalidParentMissingVersion() { public void invalidParentMissingVersion() {
InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder InitializrMetadataTestBuilder builder = InitializrMetadataTestBuilder
.withDefaults().setMavenParent("org.foo", "foo-parent", null, false); .withDefaults().setMavenParent("org.foo", "foo-parent", null, false);
assertThatExceptionOfType(InvalidInitializrMetadataException.class)
this.thrown.expect(InvalidInitializrMetadataException.class); .isThrownBy(builder::build).withMessageContaining(
this.thrown.expectMessage( "Custom maven pom requires groupId, artifactId and version");
"Custom maven pom requires groupId, artifactId and version");
builder.build();
} }
@Test @Test

View File

@ -21,11 +21,11 @@ import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
/** /**
* Tests for {@link Link}. * Tests for {@link Link}.
@ -34,22 +34,19 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class LinkTests { public class LinkTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void resolveInvalidLinkNoRel() { public void resolveInvalidLinkNoRel() {
Link link = new Link(); Link link = new Link();
link.setHref("https://example.com"); link.setHref("https://example.com");
this.thrown.expect(InvalidInitializrMetadataException.class); assertThatExceptionOfType(InvalidInitializrMetadataException.class)
link.resolve(); .isThrownBy(link::resolve);
} }
@Test @Test
public void resolveInvalidLinkNoHref() { public void resolveInvalidLinkNoHref() {
Link link = Link.create("reference", null, "foo doc"); Link link = Link.create("reference", null, "foo doc");
this.thrown.expect(InvalidInitializrMetadataException.class); assertThatExceptionOfType(InvalidInitializrMetadataException.class)
link.resolve(); .isThrownBy(link::resolve);
} }
@Test @Test
@ -94,10 +91,9 @@ public class LinkTests {
public void expandLinkMissingVariable() { public void expandLinkMissingVariable() {
Link link = Link.create("reference", "https://example.com/{a}/2/{b}"); Link link = Link.create("reference", "https://example.com/{a}/2/{b}");
link.resolve(); link.resolve();
assertThatIllegalArgumentException()
this.thrown.expect(IllegalArgumentException.class); .isThrownBy(() -> link.expand(Collections.singletonMap("a", "test")))
this.thrown.expectMessage("missing value for 'b'"); .withMessageContaining("missing value for 'b'");
link.expand(Collections.singletonMap("a", "test"));
} }
} }

View File

@ -16,7 +16,7 @@
package io.spring.initializr.metadata; package io.spring.initializr.metadata;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -16,7 +16,7 @@
package io.spring.initializr.metadata; package io.spring.initializr.metadata;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -16,7 +16,7 @@
package io.spring.initializr.metadata; package io.spring.initializr.metadata;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -16,7 +16,7 @@
package io.spring.initializr.metadata; package io.spring.initializr.metadata;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -30,7 +30,7 @@ import org.custommonkey.xmlunit.SimpleNamespaceContext;
import org.custommonkey.xmlunit.XMLUnit; import org.custommonkey.xmlunit.XMLUnit;
import org.custommonkey.xmlunit.XpathEngine; import org.custommonkey.xmlunit.XpathEngine;
import org.custommonkey.xmlunit.exceptions.XpathException; import org.custommonkey.xmlunit.exceptions.XpathException;
import org.junit.Assert; import org.junit.jupiter.api.Assertions;
import org.w3c.dom.DOMException; import org.w3c.dom.DOMException;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -274,7 +274,7 @@ public class PomAssert {
public PomAssert hasNoRepository() { public PomAssert hasNoRepository() {
try { try {
Assert.assertEquals(0, this.eng Assertions.assertEquals(0, this.eng
.getMatchingNodes(createRootNodeXPath("repositories"), this.doc) .getMatchingNodes(createRootNodeXPath("repositories"), this.doc)
.getLength()); .getLength());
} }

View File

@ -16,7 +16,7 @@
package io.spring.initializr.util; package io.spring.initializr.util;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -20,11 +20,10 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/** /**
* Tests for {@link VersionParser}. * Tests for {@link VersionParser}.
@ -33,9 +32,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class VersionParserTests { public class VersionParserTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
private VersionParser parser = new VersionParser(Collections.emptyList()); private VersionParser parser = new VersionParser(Collections.emptyList());
@Test @Test
@ -58,8 +54,8 @@ public class VersionParserTests {
@Test @Test
public void parseInvalidVersion() { public void parseInvalidVersion() {
this.thrown.expect(InvalidVersionException.class); assertThatExceptionOfType(InvalidVersionException.class)
this.parser.parse("foo"); .isThrownBy(() -> this.parser.parse("foo"));
} }
@Test @Test
@ -128,8 +124,8 @@ public class VersionParserTests {
@Test @Test
public void invalidRange() { public void invalidRange() {
this.thrown.expect(InvalidVersionException.class); assertThatExceptionOfType(InvalidVersionException.class)
this.parser.parseRange("foo-bar"); .isThrownBy(() -> this.parser.parseRange("foo-bar"));
} }
} }

View File

@ -16,11 +16,10 @@
package io.spring.initializr.util; package io.spring.initializr.util;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
/** /**
* Tests for {@link VersionProperty}. * Tests for {@link VersionProperty}.
@ -29,9 +28,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class VersionPropertyTests { public class VersionPropertyTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void testStandardProperty() { public void testStandardProperty() {
assertThat(VersionProperty.of("spring-boot.version").toStandardFormat()) assertThat(VersionProperty.of("spring-boot.version").toStandardFormat())
@ -58,16 +54,15 @@ public class VersionPropertyTests {
@Test @Test
public void testInvalidPropertyUpperCase() { public void testInvalidPropertyUpperCase() {
this.thrown.expect(IllegalArgumentException.class); assertThatIllegalArgumentException()
this.thrown.expectMessage("upper case"); .isThrownBy(() -> VersionProperty.of("Spring-boot.version"));
VersionProperty.of("Spring-boot.version");
} }
@Test @Test
public void testInvalidPropertyIllegalCharacter() { public void testInvalidPropertyIllegalCharacter() {
this.thrown.expect(IllegalArgumentException.class); assertThatIllegalArgumentException()
this.thrown.expectMessage("Unsupported character"); .isThrownBy(() -> VersionProperty.of("spring-boot_version"))
VersionProperty.of("spring-boot_version"); .withMessageContaining("Unsupported character");
} }
} }

View File

@ -20,9 +20,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import org.assertj.core.api.Condition; import org.assertj.core.api.Condition;
import org.junit.Rule; import org.junit.jupiter.api.Test;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
@ -31,9 +29,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/ */
public class VersionRangeTests { public class VersionRangeTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test @Test
public void simpleStartingRange() { public void simpleStartingRange() {
assertThat(new VersionRange(Version.parse("1.3.0.RELEASE")).toString()) assertThat(new VersionRange(Version.parse("1.3.0.RELEASE")).toString())

View File

@ -18,7 +18,7 @@ package io.spring.initializr.util;
import java.util.Collections; import java.util.Collections;
import org.junit.Test; import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;

View File

@ -82,7 +82,11 @@
<version>0.7.0.BUILD-SNAPSHOT</version> <version>0.7.0.BUILD-SNAPSHOT</version>
<type>test-jar</type> <type>test-jar</type>
</dependency> </dependency>
<dependency>
<groupId>org.junit-pioneer</groupId>
<artifactId>junit-pioneer</artifactId>
<version>0.1.2</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId> <artifactId>spring-boot-dependencies</artifactId>
@ -232,7 +236,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version> <version>2.22.1</version>
<configuration> <configuration>
<includes> <includes>
<include>**/*Tests.java</include> <include>**/*Tests.java</include>