restore containing class detection for parameterized tests (IDEA-174476)

This commit is contained in:
Anna Kozlova
2017-06-14 19:43:43 +03:00
parent e62a7b0a91
commit bc314ef759
2 changed files with 30 additions and 1 deletions
@@ -24,6 +24,7 @@ import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.actions.ConfigurationFromContext;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.junit.InheritorChooser;
import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
@@ -109,7 +110,9 @@ public abstract class AbstractInClassConfigurationProducer<T extends JavaTestCon
}
else if (element instanceof PsiMember) {
psiClass = contextLocation instanceof MethodLocation ? ((MethodLocation)contextLocation).getContainingClass()
: ((PsiMember)element).getContainingClass();
: contextLocation instanceof PsiMemberParameterizedLocation
? ((PsiMemberParameterizedLocation)contextLocation).getContainingClass()
: ((PsiMember)element).getContainingClass();
if (isTestClass(psiClass)) {
break;
}
@@ -21,6 +21,7 @@ import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.application.ApplicationConfiguration;
import com.intellij.execution.junit.*;
import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.TestSearchScope;
import com.intellij.java.execution.BaseConfigurationTestCase;
@@ -91,6 +92,31 @@ public class ContextConfigurationTest extends BaseConfigurationTestCase {
checkPackage(packageName, configuration);
checkGeneretedName(configuration, shortName + "." + METHOD_NAME);
}
//fake parameterized by providing corresponding location
public void testMethodInAbstractParameterizedTest() throws Exception {
String packageName = "abstractTests";
String shortName = "AbstractTestImpl1";
String qualifiedName = StringUtil.getQualifiedName(packageName, shortName);
PsiClass psiClass = findClass(getModule1(), qualifiedName);
PsiMethod testMethod = psiClass.findMethodsByName(METHOD_NAME, true)[0];
MapDataContext dataContext = new MapDataContext();
dataContext.put(CommonDataKeys.PROJECT, myProject);
if (LangDataKeys.MODULE.getData(dataContext) == null) {
dataContext.put(LangDataKeys.MODULE, ModuleUtilCore.findModuleForPsiElement(testMethod));
}
dataContext.put(Location.DATA_KEY, new PsiMemberParameterizedLocation(myProject, testMethod, psiClass, "param"));
ConfigurationContext context = ConfigurationContext.getFromContext(dataContext);
RunnerAndConfigurationSettings settings = context.getConfiguration();
JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration();
checkClassName(qualifiedName, configuration);
checkMethodName(METHOD_NAME, configuration);
checkPackage(packageName, configuration);
checkGeneretedName(configuration, shortName + "." + METHOD_NAME);
}
public void testJUnitMethodTest() {
PsiClass psiClass = findClass(getModule1(), CLASS_NAME);