diff --git a/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java b/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java index a349557bc88e..ef0c7bb51899 100644 --- a/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java +++ b/java/java-impl/src/com/intellij/testIntegration/createTest/CreateTestDialog.java @@ -165,8 +165,7 @@ public class CreateTestDialog extends DialogWrapper { } private void updateMethodsTable() { - List methods = TestIntegrationUtils.extractClassMethods( - myTargetClass, myShowInheritedMethodsBox.isSelected()); + List methods = createMemberInfos(myTargetClass, myShowInheritedMethodsBox.isSelected()); Set selectedMethods = new HashSet<>(); for (MemberInfo each : myMethodsTable.getSelectedMemberInfos()) { @@ -179,6 +178,10 @@ public class CreateTestDialog extends DialogWrapper { myMethodsTable.setMemberInfos(methods); } + protected @NotNull List<@NotNull MemberInfo> createMemberInfos(PsiClass targetClass, boolean includeInherited) { + return TestIntegrationUtils.extractClassMethods(targetClass, includeInherited); + } + private String getDefaultLibraryName() { return getProperties().getValue(DEFAULT_LIBRARY_NAME_PROPERTY, "JUnit5"); } diff --git a/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/testIntegration/KotlinCreateTestDialog.kt b/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/testIntegration/KotlinCreateTestDialog.kt index a90d87d33b4b..f07eba87c5ca 100644 --- a/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/testIntegration/KotlinCreateTestDialog.kt +++ b/plugins/kotlin/code-insight/impl-base/src/org/jetbrains/kotlin/idea/codeinsights/impl/base/testIntegration/KotlinCreateTestDialog.kt @@ -9,10 +9,16 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiPackage import com.intellij.psi.codeStyle.JavaCodeStyleSettings import com.intellij.refactoring.util.RefactoringMessageUtil +import com.intellij.refactoring.util.classMembers.MemberInfo import com.intellij.testIntegration.createTest.CreateTestDialog import org.jetbrains.annotations.Nls +import org.jetbrains.kotlin.analysis.api.permissions.KaAllowAnalysisOnEdt +import org.jetbrains.kotlin.analysis.api.permissions.allowAnalysisOnEdt +import org.jetbrains.kotlin.asJava.elements.KtLightMethod +import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider +import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfoSupport import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtProperty @@ -33,6 +39,26 @@ class KotlinCreateTestDialog( suggestTestClassName(targetClass, sourceElement)?.let { className = it } } + override fun createMemberInfos(targetClass: PsiClass?, includeInherited: Boolean): List { + return super.createMemberInfos(targetClass, includeInherited).map(::KotlinTestMemberInfo) + } + + /** + * Workaround to fix display name rendering for Kotlin test members + */ + @OptIn(KaAllowAnalysisOnEdt::class) + private class KotlinTestMemberInfo(memberInfo: MemberInfo): MemberInfo(memberInfo.member) { + init { + val unwrapped = (memberInfo.member as? KtLightMethod)?.unwrapped + if (unwrapped is KtNamedFunction) { + displayName = + allowAnalysisOnEdt { + KotlinMemberInfoSupport.getInstance().renderMemberInfo(unwrapped) + } + } + } + } + override fun getClassName(): String = explicitClassName ?: super.className override fun checkCanCreateClass(): String? =