run all tests in abstract class inheritors

This commit is contained in:
anna
2012-02-14 18:54:08 +01:00
parent 281a692bff
commit 24054464f0
6 changed files with 62 additions and 12 deletions
@@ -102,7 +102,7 @@ public class InheritorChooser {
}
});
JBPopupFactory.getInstance().createListPopupBuilder(list)
.setTitle("Choose executable classes to run " + psiMethod.getName())
.setTitle("Choose executable classes to run " + (psiMethod != null ? psiMethod.getName() : containingClass.getName()))
.setMovable(false)
.setResizable(false)
.setRequestFocus(true)
@@ -275,7 +275,7 @@ public class JUnitUtil {
public static PsiClass getTestClass(final Location<?> location) {
for (Iterator<Location<PsiClass>> iterator = location.getAncestors(PsiClass.class, false); iterator.hasNext();) {
final Location<PsiClass> classLocation = iterator.next();
if (isTestClass(classLocation)) return classLocation.getPsiElement();
if (isTestClass(classLocation.getPsiElement(), false, true)) return classLocation.getPsiElement();
}
PsiElement element = location.getPsiElement();
if (element instanceof PsiClassOwner) {
@@ -365,9 +365,15 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
public void bePatternConfiguration(List<PsiClass> classes, PsiMethod method) {
myData.TEST_OBJECT = TEST_PATTERN;
final Set<String> patterns = new HashSet<String>();
myData.METHOD_NAME = method.getName();
final String methodSufiix;
if (method != null) {
myData.METHOD_NAME = method.getName();
methodSufiix = "," + myData.METHOD_NAME;
} else {
methodSufiix = "";
}
for (PsiClass pattern : classes) {
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + "," + myData.METHOD_NAME);
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + methodSufiix);
}
myData.setPatterns(patterns);
setGeneratedName();
@@ -26,6 +26,9 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import java.util.List;
public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
private PsiClass myTestClass;
@@ -55,5 +58,26 @@ public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
return myTestClass;
}
@Override
public void perform(final ConfigurationContext context, final Runnable performRunnable) {
final InheritorChooser inheritorChooser = new InheritorChooser() {
@Override
protected void runForClasses(List<PsiClass> classes, PsiMethod method, ConfigurationContext context, Runnable performRunnable) {
((JUnitConfiguration)context.getConfiguration().getConfiguration()).bePatternConfiguration(classes, method);
super.runForClasses(classes, method, context, performRunnable);
}
@Override
protected void runForClass(PsiClass aClass,
PsiMethod psiMethod,
ConfigurationContext context,
Runnable performRunnable) {
((JUnitConfiguration)context.getConfiguration().getConfiguration()).beClassConfiguration(aClass);
super.runForClass(aClass, psiMethod, context, performRunnable);
}
};
if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, null, myTestClass)) return;
super.perform(context, performRunnable);
}
}
@@ -263,10 +263,16 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
public void bePatternConfiguration(List<PsiClass> classes, PsiMethod method) {
data.TEST_OBJECT = TestType.PATTERN.getType();
data.METHOD_NAME = method.getName();
final String suffix;
if (method != null) {
data.METHOD_NAME = method.getName();
suffix = "," + data.METHOD_NAME;
} else {
suffix = "";
}
Set<String> patterns = new HashSet<String>();
for (PsiClass pattern : classes) {
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + "," + data.METHOD_NAME);
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + suffix);
}
data.setPatterns(patterns);
setGeneratedName();
@@ -100,9 +100,19 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu
@Override
public void perform(final ConfigurationContext context, final Runnable performRunnable) {
if (myPsiElement instanceof PsiMethod) {
final PsiMethod psiMethod = (PsiMethod)myPsiElement;
final PsiClass containingClass = psiMethod.getContainingClass();
if (myPsiElement instanceof PsiMethod || myPsiElement instanceof PsiClass) {
final PsiMethod psiMethod;
final PsiClass containingClass;
if (myPsiElement instanceof PsiMethod) {
psiMethod = (PsiMethod)myPsiElement;
containingClass = psiMethod.getContainingClass();
} else {
psiMethod = null;
containingClass = (PsiClass)myPsiElement;
}
final InheritorChooser inheritorChooser = new InheritorChooser() {
@Override
protected void runForClasses(List<PsiClass> classes, PsiMethod method, ConfigurationContext context, Runnable performRunnable) {
@@ -115,9 +125,13 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu
PsiMethod psiMethod,
ConfigurationContext context,
Runnable performRunnable) {
final Project project = psiMethod.getProject();
final MethodLocation methodLocation = new MethodLocation(project, psiMethod, PsiLocation.fromPsiElement(aClass));
((TestNGConfiguration)context.getConfiguration().getConfiguration()).setMethodConfiguration(methodLocation);
if (myPsiElement instanceof PsiMethod) {
final Project project = psiMethod.getProject();
final MethodLocation methodLocation = new MethodLocation(project, psiMethod, PsiLocation.fromPsiElement(aClass));
((TestNGConfiguration)context.getConfiguration().getConfiguration()).setMethodConfiguration(methodLocation);
} else {
((TestNGConfiguration)context.getConfiguration().getConfiguration()).setClassConfiguration(aClass);
}
super.runForClass(aClass, psiMethod, context, performRunnable);
}
};