From bea4642665f2a8ead12be8944555409ea8ec68fd Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Wed, 14 Aug 2024 20:24:01 +0200 Subject: [PATCH 1/2] add basic recipe and test classes --- .../test/ExpectedExceptionToAssertThrows.java | 19 ++++++ .../ExpectedExceptionToAssertThrowsTest.java | 64 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java create mode 100644 src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java diff --git a/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java b/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java new file mode 100644 index 00000000..f88a144b --- /dev/null +++ b/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java @@ -0,0 +1,19 @@ +package org.openrewrite.java.spring.test; + +import org.openrewrite.NlsRewrite.Description; +import org.openrewrite.NlsRewrite.DisplayName; +import org.openrewrite.Recipe; + +public class ExpectedExceptionToAssertThrows extends Recipe { + + @Override + public @DisplayName String getDisplayName() { + return "Migrate JUnit 4's ExpectedException"; + } + + @Override + public @Description String getDescription() { + return "Replace JUnit 4's ExpectedException with JUnit 5's assertThrows."; + } + +} diff --git a/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java b/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java new file mode 100644 index 00000000..fb4a6722 --- /dev/null +++ b/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java @@ -0,0 +1,64 @@ +package org.openrewrite.java.spring.test; + +import static org.openrewrite.java.Assertions.java; +import org.junit.jupiter.api.Test; +import org.openrewrite.DocumentExample; +import org.openrewrite.InMemoryExecutionContext; +import org.openrewrite.java.JavaParser; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.RewriteTest; + +public class ExpectedExceptionToAssertThrowsTest implements RewriteTest { + + @Override + public void defaults(RecipeSpec spec) { + spec.recipe(new ExpectedExceptionToAssertThrows()) + .parser(JavaParser.fromJavaVersion() + .classpathFromResources(new InMemoryExecutionContext(), "spring-boot-test", "spring-test") + ); + } + + @Test + @DocumentExample + void thatExpectedExceptionIsMigratedToAssertThrows() { + rewriteRun( + //language=java + java( + """ + import org.junit.Rule; + import org.junit.Test; + import org.junit.rules.ExpectedException; + + class SomeTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void test() { + thrown.expectMessage("exception"); + throw new RuntimeException("exception"); + } + } + """, + """ + import org.junit.Rule; + import org.junit.Test; + import org.junit.rules.ExpectedException; + + class SomeTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void test() { + thrown.expectMessage("exception"); + throw new RuntimeException("exception"); + } + } + """ + ) + ); + } +} From 7e3a39ca8dec428cf47f4dbd9b895066444b3b77 Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Thu, 15 Aug 2024 12:00:40 +0200 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../test/ExpectedExceptionToAssertThrows.java | 15 +++++++++++++ .../ExpectedExceptionToAssertThrowsTest.java | 21 ++++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java b/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java index f88a144b..4ac7fd24 100644 --- a/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java +++ b/src/main/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrows.java @@ -1,3 +1,18 @@ +/* + * Copyright 2024 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * https://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.openrewrite.java.spring.test; import org.openrewrite.NlsRewrite.Description; diff --git a/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java b/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java index fb4a6722..b4e305b3 100644 --- a/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java +++ b/src/test/java/org/openrewrite/java/spring/test/ExpectedExceptionToAssertThrowsTest.java @@ -1,6 +1,19 @@ -package org.openrewrite.java.spring.test; +/* + * Copyright 2024 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * https://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -import static org.openrewrite.java.Assertions.java; import org.junit.jupiter.api.Test; import org.openrewrite.DocumentExample; import org.openrewrite.InMemoryExecutionContext; @@ -8,7 +21,9 @@ import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; -public class ExpectedExceptionToAssertThrowsTest implements RewriteTest { +import static org.openrewrite.java.Assertions.java; + +class ExpectedExceptionToAssertThrowsTest implements RewriteTest { @Override public void defaults(RecipeSpec spec) {