From 74bff6fc25b5f612a6795f6e286ce8fc31109355 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 24 Oct 2016 16:44:50 +0200 Subject: [PATCH] junit: don't treat provider methods as test methods (IDEA-163058) --- .../com/intellij/execution/junit/JUnitUtil.java | 17 ++++++++++++++++- .../execution/junit/JUnit4Framework.java | 13 ++----------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java index 7ed83d254664..d13e4ee1240a 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java @@ -116,7 +116,12 @@ public class JUnitUtil { if (!psiMethod.hasModifierProperty(PsiModifier.PUBLIC)) return false; if (psiMethod.hasModifierProperty(PsiModifier.ABSTRACT)) return false; if (AnnotationUtil.isAnnotated(psiMethod, CONFIGURATIONS_ANNOTATION_NAME, false)) return false; - if (checkRunWith && AnnotationUtil.isAnnotated(aClass, RUN_WITH, true)) return true; + if (checkRunWith) { + PsiAnnotation annotation = AnnotationUtil.findAnnotation(aClass, RUN_WITH); + if (annotation != null) { + return !isParameterized(annotation); + } + } if (psiMethod.getParameterList().getParametersCount() > 0) return false; if (psiMethod.hasModifierProperty(PsiModifier.STATIC) && SUITE_METHOD_NAME.equals(psiMethod.getName())) return false; if (!psiMethod.getName().startsWith("test")) return false; @@ -377,6 +382,16 @@ public class JUnitUtil { return null; } + public static boolean isParameterized(PsiAnnotation annotation) { + final PsiAnnotationMemberValue value = annotation.findAttributeValue(PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME); + if (value instanceof PsiClassObjectAccessExpression) { + final PsiTypeElement operand = ((PsiClassObjectAccessExpression)value).getOperand(); + final PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(operand.getType()); + return psiClass != null && "org.junit.runners.Parameterized".equals(psiClass.getQualifiedName()); + } + return false; + } + public static class TestMethodFilter implements Condition { private final PsiClass myClass; private final JavaTestFramework framework; diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java b/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java index fca7e28e5520..72d1586a61df 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnit4Framework.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,6 @@ import com.intellij.openapi.roots.ExternalLibraryDescriptor; import com.intellij.openapi.ui.Messages; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; -import com.intellij.psi.util.PsiUtil; import com.intellij.testIntegration.JavaTestFramework; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -170,15 +169,7 @@ public class JUnit4Framework extends JavaTestFramework { @Override public boolean isParameterized(PsiClass clazz) { final PsiAnnotation annotation = AnnotationUtil.findAnnotation(clazz, JUnitUtil.RUN_WITH); - if (annotation != null) { - final PsiAnnotationMemberValue value = annotation.findAttributeValue(PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME); - if (value instanceof PsiClassObjectAccessExpression) { - final PsiTypeElement operand = ((PsiClassObjectAccessExpression)value).getOperand(); - final PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(operand.getType()); - return psiClass != null && "org.junit.runners.Parameterized".equals(psiClass.getQualifiedName()); - } - } - return false; + return annotation != null && JUnitUtil.isParameterized(annotation); } @Override