diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitCommonClassNames.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitCommonClassNames.java index 6b85cc3c5c93..87b44a59ffcf 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitCommonClassNames.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/junit/JUnitCommonClassNames.java @@ -35,4 +35,5 @@ public class JUnitCommonClassNames { public static final String ORG_JUNIT_JUPITER_PARAMS_PROVIDER_CSV_FILE_SOURCE = "org.junit.jupiter.params.provider.CsvFileSource"; public static final String ORG_JUNIT_JUPITER_PARAMS_PROVIDER_ARGUMENTS_SOURCE = "org.junit.jupiter.params.provider.ArgumentsSource"; public static final String ORG_JUNIT_JUPITER_PARAMS_CONVERTER_CONVERT_WITH = "org.junit.jupiter.params.converter.ConvertWith"; + public static final String ORG_JUNIT_JUPITER_API_TEST = "org.junit.jupiter.api.Test"; } 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 81d447c2da51..14c35d1c3ca3 100644 --- a/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedInspection.kt +++ b/plugins/junit/src/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedInspection.kt @@ -17,6 +17,7 @@ package com.intellij.execution.junit.codeInsight import com.intellij.codeInsight.AnnotationUtil import com.intellij.codeInsight.daemon.impl.analysis.JavaGenericsUtil +import com.intellij.codeInsight.daemon.impl.quickfix.DeleteElementFix import com.intellij.codeInsight.intention.QuickFixFactory import com.intellij.codeInspection.BaseJavaBatchLocalInspectionTool import com.intellij.codeInspection.ProblemHighlightType @@ -53,6 +54,12 @@ class JUnit5MalformedParameterizedInspection : BaseJavaBatchLocalInspectionTool( val modifierList = method.modifierList val parameterizedAnnotation = modifierList.findAnnotation(JUnitCommonClassNames.ORG_JUNIT_JUPITER_PARAMS_PARAMETERIZED_TEST) if (parameterizedAnnotation != null) { + val testAnnotation = modifierList.findAnnotation(JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_TEST) + if (testAnnotation != null && method.parameterList.parametersCount > 0) { + holder.registerProblem(testAnnotation, + "Suspicious combination @Test and @ParameterizedTest", + DeleteElementFix(testAnnotation)) + } val methodSource = modifierList.findAnnotation(JUnitCommonClassNames.ORG_JUNIT_JUPITER_PARAMS_PROVIDER_METHOD_SOURCE) if (methodSource != null) { checkMethodSource(method, methodSource) diff --git a/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedTest.java b/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedTest.java index 6fca440e8068..2dca6b1b3142 100644 --- a/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/codeInsight/JUnit5MalformedParameterizedTest.java @@ -33,6 +33,8 @@ public class JUnit5MalformedParameterizedTest extends LightInspectionTestCase { super.setUp(); addEnvironmentClass("package org.junit.jupiter.params;\n" + "public @interface ParameterizedTest {}"); + addEnvironmentClass("package org.junit.jupiter.api;\n" + + "public @interface Test {}"); addEnvironmentClass("package org.junit.jupiter.params.provider;\n" + "public @interface MethodSource {String[] names();}"); addEnvironmentClass("package org.junit.jupiter.params.provider;\n" + diff --git a/plugins/junit/testData/codeInsight/malformedParameterized/MalformedSources.java b/plugins/junit/testData/codeInsight/malformedParameterized/MalformedSources.java index 5204dd60568c..c10df71d92a6 100644 --- a/plugins/junit/testData/codeInsight/malformedParameterized/MalformedSources.java +++ b/plugins/junit/testData/codeInsight/malformedParameterized/MalformedSources.java @@ -63,4 +63,9 @@ class ParameterizedTestsDemo { @ValueSource(ints = 1) void testWithValuesMultipleParams(int i, int j) { } + @ParameterizedTest + @ValueSource(ints = {1}) + @org.junit.jupiter.api.Test + void testWithTestAnnotation(int i) { } + }