diff --git a/src/main/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensions.java b/src/main/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensions.java index 92cbb4adf..b3dcddbca 100644 --- a/src/main/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensions.java +++ b/src/main/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensions.java @@ -55,7 +55,7 @@ public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, Ex private J.ClassDeclaration maybeRemoveExtension(J.ClassDeclaration classDecl, String extensionFQN) { TypeTree extension = classDecl.getExtends(); - if (extension != null && TypeUtils.isAssignableTo(extensionFQN, extension.getType())) { + if (extension != null && TypeUtils.isOfClassType(extension.getType(), extensionFQN)) { classDecl = classDecl.withExtends(null); maybeRemoveImport(extensionFQN); } diff --git a/src/test/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensionsTest.java b/src/test/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensionsTest.java index 7ccea2b6a..23ec728db 100644 --- a/src/test/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensionsTest.java +++ b/src/test/java/org/openrewrite/java/testing/mockito/RemovePowerMockClassExtensionsTest.java @@ -81,4 +81,45 @@ public class MyPowerMockConfiguration {} """ )); } + + @Test + void subclassOfOwnBaseClassKeepsExtension() { + //language=java + rewriteRun( + java( + """ + package org.powermock.modules.testng; + + public class PowerMockTestCase {} + """ + ), + java( + """ + import org.powermock.modules.testng.PowerMockTestCase; + + abstract class MyBaseTest extends PowerMockTestCase { + protected int helper() { + return 1; + } + } + """, + """ + abstract class MyBaseTest { + protected int helper() { + return 1; + } + } + """ + ), + java( + """ + class FooTest extends MyBaseTest { + void test() { + helper(); + } + } + """ + ) + ); + } }