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 fedc9c9747a6..692c1c3ce7a5 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java +++ b/java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java @@ -42,7 +42,7 @@ import java.util.*; @SuppressWarnings({"UtilityClassWithoutPrivateConstructor"}) public class JUnitUtil { - @NonNls private static final String TESTCASE_CLASS = "junit.framework.TestCase"; + @NonNls public static final String TESTCASE_CLASS = "junit.framework.TestCase"; @NonNls private static final String TEST_INTERFACE = "junit.framework.Test"; @NonNls private static final String TESTSUITE_CLASS = "junit.framework.TestSuite"; @NonNls private static final String TEST_ANNOTATION = "org.junit.Test"; diff --git a/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java index 2d69e2092423..739682cca397 100644 --- a/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java @@ -20,9 +20,16 @@ import com.intellij.execution.Location; import com.intellij.execution.RunConfigurationExtension; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; +import com.intellij.psi.search.GlobalSearchScope; +import junit.framework.Test; +import junit.framework.TestCase; public class AllInPackageConfigurationProducer extends JUnitConfigurationProducer { private PsiPackage myPackage = null; @@ -32,6 +39,18 @@ public class AllInPackageConfigurationProducer extends JUnitConfigurationProduce final PsiElement element = location.getPsiElement(); myPackage = checkPackage(element); if (myPackage == null) return null; + final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); + boolean junitJarFound = false; + for (PsiDirectory directory : myPackage.getDirectories()) { + final Module module = ModuleUtil.findModuleForFile(directory.getVirtualFile(), project); + if (module != null) { + if (facade.findClass(JUnitUtil.TESTCASE_CLASS, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, true)) != null) { + junitJarFound = true; + break; + } + } + } + if (!junitJarFound) return null; RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration(); final JUnitConfiguration.Data data = configuration.getPersistentData(); diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java index 1dccaf25523b..9785c2de2353 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java @@ -19,11 +19,18 @@ import com.intellij.execution.Location; import com.intellij.execution.RunConfigurationExtension; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; +import com.intellij.execution.junit.JUnitUtil; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; +import com.intellij.psi.search.GlobalSearchScope; import com.theoryinpractice.testng.model.TestData; import com.theoryinpractice.testng.model.TestType; +import com.theoryinpractice.testng.util.TestNGUtil; public class TestNGPackageConfigurationProducer extends TestNGConfigurationProducer { private PsiPackage myPackage = null; @@ -33,6 +40,18 @@ public class TestNGPackageConfigurationProducer extends TestNGConfigurationProdu final PsiElement element = location.getPsiElement(); myPackage = checkPackage(element); if (myPackage == null) return null; + final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); + boolean testngJarFound = false; + for (PsiDirectory directory : myPackage.getDirectories()) { + final Module module = ModuleUtil.findModuleForFile(directory.getVirtualFile(), project); + if (module != null) { + if (facade.findClass(TestNGUtil.TEST_ANNOTATION_FQN, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, true)) != null) { + testngJarFound = true; + break; + } + } + } + if (!testngJarFound) return null; RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); final TestNGConfiguration configuration = (TestNGConfiguration)settings.getConfiguration(); final TestData data = configuration.data;