diff --git a/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java b/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java index fbc48768f..fe711d907 100644 --- a/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java +++ b/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java @@ -123,6 +123,10 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation methodInvocat if (!chainedAssertMatcher.matches(assertThatArg)) { return mi; } + // Parameterized toString overloads have no equivalent hasToString assertion. + if ("toString".equals(chainedAssertion) && !(assertThatArg.getArguments().get(0) instanceof J.Empty)) { + return mi; + } // Extract the actual argument for the new assertThat call Expression actual = assertThatArg.getSelect() != null ? assertThatArg.getSelect() : assertThatArg; diff --git a/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java b/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java index 152468b97..1ff97e632 100644 --- a/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java +++ b/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java @@ -467,4 +467,24 @@ void testMethod(Object argument) { ); } } + + @Test + void doesNotRewriteParameterizedByteArrayOutputStreamToString() { + rewriteRun( + java( + """ + import java.io.ByteArrayOutputStream; + import java.nio.charset.StandardCharsets; + + import static org.assertj.core.api.Assertions.assertThat; + + class Test { + void verify(ByteArrayOutputStream stdout, String expected) { + assertThat(stdout.toString(StandardCharsets.UTF_8)).isEqualTo(expected); + } + } + """ + ) + ); + } }