mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit 5: ensure junit 5 framework detected
This commit is contained in:
@@ -66,6 +66,7 @@ public class JUnitUtil {
|
||||
private static final Collection<String> TEST_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(TEST_ANNOTATION,
|
||||
TEST5_ANNOTATION,
|
||||
TEST5_FACTORY_ANNOTATION));
|
||||
private static final Collection<String> TEST5_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(TEST5_ANNOTATION, TEST5_FACTORY_ANNOTATION));
|
||||
|
||||
private static final List<String> INSTANCE_CONFIGS = Arrays.asList(BEFORE_ANNOTATION_NAME, AFTER_ANNOTATION_NAME);
|
||||
private static final List<String> INSTANCE_5_CONFIGS = Arrays.asList(BEFORE_EACH_ANNOTATION_NAME, AFTER_EACH_ANNOTATION_NAME);
|
||||
@@ -185,7 +186,7 @@ public class JUnitUtil {
|
||||
if (modifierList == null) return false;
|
||||
if (AnnotationUtil.isAnnotated(psiClass, RUN_WITH, true)) return true;
|
||||
|
||||
if (!PsiClassUtil.isRunnableClass(psiClass, !isJUnit5(modifierList), checkAbstract)) return false;
|
||||
if (!PsiClassUtil.isRunnableClass(psiClass, true, checkAbstract)) return false;
|
||||
|
||||
for (final PsiMethod method : psiClass.getAllMethods()) {
|
||||
ProgressManager.checkCanceled();
|
||||
@@ -195,6 +196,20 @@ public class JUnitUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isJUnit5TestClass(final PsiClass psiClass, boolean checkAbstract) {
|
||||
final PsiModifierList modifierList = psiClass.getModifierList();
|
||||
if (modifierList == null) return false;
|
||||
|
||||
if (!PsiClassUtil.isRunnableClass(psiClass, false, checkAbstract)) return false;
|
||||
|
||||
for (final PsiMethod method : psiClass.getAllMethods()) {
|
||||
ProgressManager.checkCanceled();
|
||||
if (AnnotationUtil.isAnnotated(method, TEST5_ANNOTATIONS)) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isJUnit5(@NotNull PsiElement element) {
|
||||
return isJUnit5(element.getResolveScope(), element.getProject());
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
<deadCode implementation="com.intellij.execution.junit2.inspection.JUnitEntryPoint"/>
|
||||
<cantBeStatic implementation="com.intellij.execution.junit2.inspection.JUnitCantBeStaticExtension" />
|
||||
<testFramework implementation="com.intellij.execution.junit.JUnit3Framework"/>
|
||||
<testFramework implementation="com.intellij.execution.junit.JUnit5Framework" id="junit5" order="before junit4"/>
|
||||
<testFramework implementation="com.intellij.execution.junit.JUnit4Framework" id="junit4"/>
|
||||
<testFramework implementation="com.intellij.execution.junit.JUnit5Framework" id="junit5"/>
|
||||
<configurationType implementation="com.intellij.execution.junit.JUnitConfigurationType"/>
|
||||
<library.dependencyScopeSuggester implementation="com.intellij.execution.junit.JUnitDependencyScopeSuggester"/>
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ public class JUnit5Framework extends JavaTestFramework {
|
||||
|
||||
public boolean isTestClass(PsiClass clazz, boolean canBePotential) {
|
||||
if (canBePotential) return isUnderTestSources(clazz);
|
||||
return JUnitUtil.isJUnit4TestClass(clazz);
|
||||
return JUnitUtil.isJUnit5TestClass(clazz, true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.intellij.junit5;
|
||||
|
||||
import com.intellij.codeInsight.TestFrameworks;
|
||||
import com.intellij.execution.junit.JUnit5Framework;
|
||||
import com.intellij.execution.junit.JUnitUtil;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
@@ -22,6 +24,7 @@ import com.intellij.testFramework.EdtTestUtil;
|
||||
import com.intellij.testFramework.TestRunnerUtil;
|
||||
import com.intellij.testFramework.fixtures.*;
|
||||
import com.intellij.testFramework.fixtures.impl.LightTempDirTestFixtureImpl;
|
||||
import com.intellij.testIntegration.TestFramework;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -66,4 +69,15 @@ class JUnit5AcceptanceTest {
|
||||
assertTrue(JUnitUtil.isTestClass(aClass, false, false));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFrameworkDetection() {
|
||||
TestRunnerUtil.replaceIdeEventQueueSafely();
|
||||
EdtTestUtil.runInEdtAndWait(() -> {
|
||||
PsiClass aClass = myFixture.addClass("class MyTest {@org.junit.jupiter.api.Test void method() {}}");
|
||||
assertNotNull(aClass);
|
||||
TestFramework framework = TestFrameworks.detectFramework(aClass);
|
||||
assertTrue(framework instanceof JUnit5Framework, framework.getName());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user