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 2b4904441e91..61357de92a8a 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java @@ -84,13 +84,6 @@ public class JUnitUtil { if (AnnotationUtil.isAnnotated(aClass, RUN_WITH, true)) return true; if (psiMethod.getParameterList().getParametersCount() > 0) return false; if (psiMethod.hasModifierProperty(PsiModifier.STATIC) && BaseTestRunner.SUITE_METHODNAME.equals(psiMethod.getName())) return false; - - for (JUnitRecognizer jUnitRecognizer : JUnitRecognizer.EP_NAME.getExtensions()) { - if (jUnitRecognizer.isTestMethod(psiMethod)) { - return true; - } - } - if (!psiMethod.getName().startsWith("test")) return false; PsiClass testCaseClass = getTestCaseClassOrNull(location); return testCaseClass != null && psiMethod.getContainingClass().isInheritor(testCaseClass, true); @@ -129,12 +122,6 @@ public class JUnitUtil { if (isTestAnnotated(method)) return true; } - for (JUnitRecognizer jUnitRecognizer : JUnitRecognizer.EP_NAME.getExtensions()) { - if (jUnitRecognizer.isTestClass(psiClass)) { - return true; - } - } - return false; } @@ -161,7 +148,7 @@ public class JUnitUtil { } public static boolean isTestAnnotated(final PsiMethod method) { - if (AnnotationUtil.isAnnotated(method, TEST_ANNOTATION, false)) { + if (AnnotationUtil.isAnnotated(method, TEST_ANNOTATION, false) || JUnitRecognizer.willBeAnnotatedAfterCompilation(method)) { final PsiAnnotation annotation = AnnotationUtil.findAnnotationInHierarchy(method.getContainingClass(), Collections.singleton(RUN_WITH)); if (annotation != null) { final PsiNameValuePair[] attributes = annotation.getParameterList().getAttributes(); diff --git a/java/execution/openapi/src/com/intellij/execution/JUnitRecognizer.java b/java/execution/openapi/src/com/intellij/execution/JUnitRecognizer.java index bd045cc82c4b..d39c9fa34263 100644 --- a/java/execution/openapi/src/com/intellij/execution/JUnitRecognizer.java +++ b/java/execution/openapi/src/com/intellij/execution/JUnitRecognizer.java @@ -12,11 +12,16 @@ public abstract class JUnitRecognizer { public static final ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.junitRecognizer"); - public boolean isTestClass(@NotNull PsiClass aClass) { + public abstract boolean isTestAnnotated(@NotNull PsiMethod method); + + public static boolean willBeAnnotatedAfterCompilation(@NotNull PsiMethod method) { + for (JUnitRecognizer jUnitRecognizer : EP_NAME.getExtensions()) { + if (jUnitRecognizer.isTestAnnotated(method)) { + return true; + } + } + return false; } - public boolean isTestMethod(@NotNull PsiMethod method) { - return false; - } } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java index 471221326a1e..c3e384b9418c 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java @@ -129,18 +129,16 @@ class TestMethod extends TestObject { } final JUnitUtil.TestMethodFilter filter = new JUnitUtil.TestMethodFilter(psiClass); boolean found = false; - boolean testAnnotatedOrFromRecognizer = false; + boolean testAnnotated = false; for (final PsiMethod method : psiClass.findMethodsByName(methodName, true)) { if (filter.value(method)) found = true; - if (JUnitUtil.isTestAnnotated(method) || isFromRecognizer(method)) { - testAnnotatedOrFromRecognizer = true; - } + if (JUnitUtil.isTestAnnotated(method)) testAnnotated = true; } if (!found) { throw new RuntimeConfigurationWarning(ExecutionBundle.message("test.method.doesnt.exist.error.message", methodName)); } - if (!AnnotationUtil.isAnnotated(psiClass, JUnitUtil.RUN_WITH, true) && !testAnnotatedOrFromRecognizer) { + if (!AnnotationUtil.isAnnotated(psiClass, JUnitUtil.RUN_WITH, true) && !testAnnotated) { try { final PsiClass testCaseClass = JUnitUtil.getTestCaseClass(configurationModule.getModule()); if (!psiClass.isInheritor(testCaseClass, true)) { @@ -153,14 +151,4 @@ class TestMethod extends TestObject { } } } - - private static boolean isFromRecognizer(PsiMethod method) { - for (JUnitRecognizer jUnitRecognizer : JUnitRecognizer.EP_NAME.getExtensions()) { - if (jUnitRecognizer.isTestMethod(method)) { - return true; - } - } - - return false; - } }