diff --git a/plugins/junit/java-tests/test/com/intellij/execution/junit/configuration/JUnitConfigurationTest.java b/plugins/junit/java-tests/test/com/intellij/execution/junit/configuration/JUnitConfigurationTest.java index f5105e58fbab..a4f4cfb0ba7b 100644 --- a/plugins/junit/java-tests/test/com/intellij/execution/junit/configuration/JUnitConfigurationTest.java +++ b/plugins/junit/java-tests/test/com/intellij/execution/junit/configuration/JUnitConfigurationTest.java @@ -194,6 +194,25 @@ public class JUnitConfigurationTest extends JUnitConfigurationTestCase { lines); } + public void testPatternConfigurationWith() throws ExecutionException, IOException { + + VirtualFile module1Content = findFile("moduleWithBothVersions"); + createModule(module1Content, true, "JUnit5"); + + Module module = getModule(3); + IntelliJProjectConfiguration.LibraryRoots junit4Library = IntelliJProjectConfiguration.getProjectLibrary("JUnit4"); + ModuleRootModificationUtil.addModuleLibrary(module, "JUnit4", junit4Library.getClassesUrls(), junit4Library.getSourcesUrls()); + + JUnitConfiguration configuration = new JUnitConfiguration("", myProject); + configuration.getPersistentData().TEST_OBJECT = JUnitConfiguration.TEST_PATTERN; + configuration.getPersistentData().setPatterns(ContainerUtil.newLinkedHashSet("with4.TestCaseInheritor", "with4.TestCaseInheritorMultipleConstructor")); + configuration.setModule(module); + + JavaParameters parameters = checkCanRun(configuration); + ParametersList parametersList = parameters.getProgramParametersList(); + assertTrue("Expected to run as junit4 but program parameters are: " + parametersList.getParametersString(), parametersList.getList().contains("-junit4")); + } + public void testRunningAllInPackage() throws IOException, ExecutionException { Module module1 = getModule1(); GlobalSearchScope module1AndLibraries = GlobalSearchScope.moduleWithLibrariesScope(module1); diff --git a/plugins/junit/java-tests/testData/configuration/moduleWithBothVersions/with4/TestCaseInheritor.java b/plugins/junit/java-tests/testData/configuration/moduleWithBothVersions/with4/TestCaseInheritor.java new file mode 100644 index 000000000000..9c71c2a246ee --- /dev/null +++ b/plugins/junit/java-tests/testData/configuration/moduleWithBothVersions/with4/TestCaseInheritor.java @@ -0,0 +1,4 @@ +package with4; +public class TestCaseInheritor extends junit.framework.TestCase { + public void test1() {} +} \ No newline at end of file diff --git a/plugins/junit/java-tests/testData/configuration/moduleWithBothVersions/with4/TestCaseInheritorMultipleConstructor.java b/plugins/junit/java-tests/testData/configuration/moduleWithBothVersions/with4/TestCaseInheritorMultipleConstructor.java new file mode 100644 index 000000000000..b8700534293c --- /dev/null +++ b/plugins/junit/java-tests/testData/configuration/moduleWithBothVersions/with4/TestCaseInheritorMultipleConstructor.java @@ -0,0 +1,5 @@ +package with4; +public class TestCaseInheritorMultipleConstructor extends junit.framework.TestCase { + public TestCaseInheritorMultipleConstructor(String s) {} + public void test1() {} +} \ No newline at end of file diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index a1e322a59c1b..b9219bf451d2 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java @@ -816,6 +816,19 @@ public abstract class TestObject extends JavaTestFrameworkRunnableState { + PsiClass aClass = JavaExecutionUtil.findMainClass(project, name, globalSearchScope); + if (aClass == null) { + return false; + } + TestFramework framework = TestFrameworks.detectFramework(aClass); + return framework instanceof JUnit4Framework || framework instanceof JUnit3Framework; + })) { + return JUnitStarter.JUNIT4_PARAMETER; + } + } + return getRunner(globalSearchScope, project); }