From ff498b46baa9db5a48aee27ea10d08ddcf2fe4f3 Mon Sep 17 00:00:00 2001 From: "Olga.Klisho" Date: Sat, 8 Aug 2020 02:18:05 +0300 Subject: [PATCH] IDEA-203748 @MethodSource recognized in super classes and interfaces GitOrigin-RevId: f5d55b876080a699dcd54cec71a04dae7af84ba8 --- .../JUnit5MalformedParameterizedInspection.kt | 8 ++--- .../JUnit5TestFrameworkSetupUtil.java | 2 +- .../malformedParameterized/MethodSource.java | 29 +++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedInspection.kt b/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedInspection.kt index cc8c41a420d5..22919c8c7924 100644 --- a/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedInspection.kt +++ b/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedInspection.kt @@ -166,10 +166,10 @@ class JUnit5MalformedParameterizedInspection : AbstractBaseJavaLocalInspectionTo if (annotationMemberValue == null) { if (methodSource.findAttributeValue(PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME) == null) return val providerName = method.name - val methods = containingClass.findMethodsBySignature( - JavaPsiFacade.getElementFactory(method.project).createMethodFromText("void $providerName()", method), false) - if (methods.isNotEmpty()) { - doCheckSourceProvider(methods[0], containingClass, methodSource, method) + val foundMethod = containingClass.findMethodBySignature( + JavaPsiFacade.getElementFactory(method.project).createMethodFromText("void $providerName()", method), true) + if (foundMethod != null) { + doCheckSourceProvider(foundMethod, containingClass, methodSource, method) } else { highlightAbsentSourceProvider(containingClass, methodSource, providerName, method) diff --git a/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5TestFrameworkSetupUtil.java b/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5TestFrameworkSetupUtil.java index c2000ef73da0..0b302add7f46 100644 --- a/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5TestFrameworkSetupUtil.java +++ b/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5TestFrameworkSetupUtil.java @@ -6,7 +6,7 @@ import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture; public class JUnit5TestFrameworkSetupUtil { public static JavaCodeInsightTestFixture setupJUnit5Library(JavaCodeInsightTestFixture fixture) { fixture.addClass( "package org.junit.jupiter.params.provider;\n" + - "public @interface MethodSource {String[] value();}"); + "public @interface MethodSource {String[] value() default \"\";}"); fixture.addClass( "package org.junit.jupiter.params;\n" + "@org.junit.platform.commons.annotation.Testable\n" + "public @interface ParameterizedTest {}"); diff --git a/plugins/junit/testData/codeInsight/malformedParameterized/MethodSource.java b/plugins/junit/testData/codeInsight/malformedParameterized/MethodSource.java index b9e909342e81..2874b4314395 100644 --- a/plugins/junit/testData/codeInsight/malformedParameterized/MethodSource.java +++ b/plugins/junit/testData/codeInsight/malformedParameterized/MethodSource.java @@ -210,4 +210,33 @@ abstract class FooThree { void test(String value) {} abstract List method1(); +} + +class SomeTest extends Base { + + @ParameterizedTest + @MethodSource + void testSomething(String content) {} +} + +class SomeTestTwo implements Inter { + + @ParameterizedTest + @MethodSource + void testSomething(String content) {} +} + +interface Inter extends Inter2{ } + +interface Inter2 { + static Stream testSomething() { + return Stream.of("a", "aa"); + } +} + + +class Base { + static Stream testSomething() { + return Stream.of("a", "aa"); + } } \ No newline at end of file