junit: recognized junit 5 inner classes with test methods

This commit is contained in:
Anna Kozlova
2016-09-19 11:16:59 +03:00
parent 20c9e143bf
commit 4e4aabdb8c
4 changed files with 23 additions and 6 deletions
@@ -133,6 +133,9 @@ public class JUnitUtil {
public static boolean isTestClass(@NotNull PsiClass psiClass, boolean checkAbstract, boolean checkForTestCaseInheritance) {
if (psiClass.getQualifiedName() == null) return false;
if (isJUnit5(psiClass)) {
return isJUnit5TestClass(psiClass, checkAbstract);
}
final PsiClass topLevelClass = PsiTreeUtil.getTopmostParentOfType(psiClass, PsiClass.class);
if (topLevelClass != null) {
final PsiAnnotation annotation = AnnotationUtil.findAnnotationInHierarchy(topLevelClass, Collections.singleton(RUN_WITH));
@@ -146,12 +149,11 @@ public class JUnitUtil {
}
}
}
boolean hasJUnit5 = isJUnit5(psiClass);
if (!PsiClassUtil.isRunnableClass(psiClass, !hasJUnit5, checkAbstract)) return false;
if (!PsiClassUtil.isRunnableClass(psiClass, true, checkAbstract)) return false;
if (AnnotationUtil.isAnnotated(psiClass, RUN_WITH, true)) return true;
if (checkForTestCaseInheritance && (!hasJUnit5 || psiClass.hasModifierProperty(PsiModifier.PUBLIC)) && isTestCaseInheritor(psiClass)) return true;
if (checkForTestCaseInheritance && isTestCaseInheritor(psiClass)) return true;
return CachedValuesManager.getCachedValue(psiClass, () ->
CachedValueProvider.Result.create(hasTestOrSuiteMethods(psiClass), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT));