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 2fa79311b8c6..91bcef935b00 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java @@ -219,7 +219,7 @@ public class JUnitUtil { return false; } - public static boolean isJUnit5TestClass(final PsiClass psiClass, boolean checkAbstract) { + public static boolean isJUnit5TestClass(@NotNull final PsiClass psiClass, boolean checkAbstract) { final PsiModifierList modifierList = psiClass.getModifierList(); if (modifierList == null) return false; diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClass.java b/plugins/junit/src/com/intellij/execution/junit/TestClass.java index 1ce6428519dc..0e92a76c2a67 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestClass.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestClass.java @@ -19,13 +19,19 @@ package com.intellij.execution.junit; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.ExecutionException; import com.intellij.execution.JavaExecutionUtil; -import com.intellij.execution.configurations.*; -import com.intellij.execution.junit2.configuration.JUnitConfigurationModel; +import com.intellij.execution.configurations.JavaParameters; +import com.intellij.execution.configurations.JavaRunConfigurationModule; +import com.intellij.execution.configurations.RuntimeConfigurationException; +import com.intellij.execution.configurations.RuntimeConfigurationWarning; import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.listeners.RefactoringElementListener; +import com.intellij.rt.execution.junit.JUnitStarter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; class TestClass extends TestObject { public TestClass(JUnitConfiguration configuration, ExecutionEnvironment environment) { @@ -40,6 +46,20 @@ class TestClass extends TestObject { return javaParameters; } + @Nullable + @Override + protected String getPreferredRunner(GlobalSearchScope globalSearchScope) { + Project project = getConfiguration().getProject(); + final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, getConfiguration().getPersistentData().getMainClassName(), globalSearchScope); + if (psiClass != null) { + if (JUnitUtil.isJUnit5TestClass(psiClass, false)) { + return JUnitStarter.JUNIT5_RUNNER_NAME; + } + return JUnitStarter.JUNIT4_PARAMETER; + } + return null; + } + @NotNull @Override protected String getForkMode() { diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java index 25a570ce0fca..b94f92d89e01 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java @@ -29,6 +29,7 @@ import com.intellij.refactoring.listeners.RefactoringElementListener; import com.intellij.refactoring.listeners.UndoRefactoringElementListener; import com.intellij.rt.execution.junit.JUnitStarter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; class TestMethod extends TestObject { public TestMethod(JUnitConfiguration configuration, ExecutionEnvironment environment) { @@ -39,8 +40,6 @@ class TestMethod extends TestObject { protected JavaParameters createJavaParameters() throws ExecutionException { final JavaParameters javaParameters = createDefaultJavaParameters(); final JUnitConfiguration.Data data = getConfiguration().getPersistentData(); - RunConfigurationModule module = getConfiguration().getConfigurationModule(); - addJUnit3Parameter(javaParameters, data, module.getProject()); javaParameters.getProgramParametersList().add(data.getMainClassName() + "," + data.getMethodNameWithSignature()); return javaParameters; } @@ -49,19 +48,30 @@ class TestMethod extends TestObject { return super.createJavaParameters(); } - protected void addJUnit3Parameter(JavaParameters javaParameters, final JUnitConfiguration.Data data, Project project) throws ExecutionException { - final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project)); - if (psiClass == null || JUnitUtil.isJUnit4TestClass(psiClass) || JUnitUtil.isJUnit5(psiClass)) { - return; + @Nullable + @Override + protected String getPreferredRunner(GlobalSearchScope globalSearchScope) { + Project project = getConfiguration().getProject(); + JUnitConfiguration.Data data = getConfiguration().getPersistentData(); + final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), globalSearchScope); + if (psiClass == null) return null; + + if (JUnitUtil.isJUnit5TestClass(psiClass, false)) { + return JUnitStarter.JUNIT5_RUNNER_NAME; } + + if (JUnitUtil.isJUnit4TestClass(psiClass)) { + return JUnitStarter.JUNIT4_PARAMETER; + } + final String methodName = data.getMethodName(); final PsiMethod[] methods = psiClass.findMethodsByName(methodName, true); for (PsiMethod method : methods) { if (JUnitUtil.isTestAnnotated(method)) { - return; + return JUnitStarter.JUNIT4_PARAMETER; } } - javaParameters.getProgramParametersList().add(JUnitStarter.JUNIT3_PARAMETER); + return JUnitStarter.JUNIT3_PARAMETER; } @Override diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index 279066c457e1..a07706d592cf 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java @@ -158,8 +158,8 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState