diff --git a/java/execution/impl/src/com/intellij/execution/testframework/JavaTestLocationProvider.java b/java/execution/impl/src/com/intellij/execution/testframework/JavaTestLocationProvider.java index 6731375a8e79..6bd1b167871c 100644 --- a/java/execution/impl/src/com/intellij/execution/testframework/JavaTestLocationProvider.java +++ b/java/execution/impl/src/com/intellij/execution/testframework/JavaTestLocationProvider.java @@ -47,25 +47,21 @@ public class JavaTestLocationProvider implements TestLocationProvider { public List getLocation(@NotNull String protocolId, @NotNull String locationData, Project project) { List results = Collections.emptyList(); + final int idx = locationData.indexOf("["); + final String paramName = idx >= 0 ? locationData.substring(idx) : null; + if (idx >= 0) { + locationData = locationData.substring(0, idx); + } + final JavaPsiFacade javaPsiFacade = JavaPsiFacade.getInstance(project); if (SUITE_PROTOCOL.equals(protocolId)) { + locationData = StringUtil.trimEnd(locationData, "."); PsiClass[] classes = javaPsiFacade.findClasses(locationData, myScope); if (classes.length > 0) { results = ContainerUtil.newSmartList(); for (PsiClass aClass : classes) { - results.add(new PsiLocation(project, aClass)); - } - } - else { - //parameter root for parameterized tests: ClassName.[paramName] - final String className = StringUtil.getPackageName(locationData); - classes = javaPsiFacade.findClasses(className, myScope); - if (classes.length > 0) { - final String paramName = StringUtil.getShortName(locationData); - results = ContainerUtil.newSmartList(); - for (PsiClass aClass : classes) { - results.add(PsiMemberParameterizedLocation.getParameterizedLocation(aClass, paramName)); - } + results.add(paramName != null ? PsiMemberParameterizedLocation.getParameterizedLocation(aClass, paramName) + : new PsiLocation(project, aClass)); } } } @@ -80,18 +76,8 @@ public class JavaTestLocationProvider implements TestLocationProvider { PsiMethod[] methods = aClass.findMethodsByName(methodName, true); if (methods.length > 0) { for (PsiMethod method : methods) { - results.add(MethodLocation.elementInClass(method, aClass)); - } - } - else { - //parameterized tests: ClassName.testName[paramName] - final int paramIdx = methodName.indexOf("["); - if (paramIdx > -1 && methodName.endsWith("]")) { - final String paramName = methodName.substring(paramIdx); - methods = aClass.findMethodsByName(methodName.substring(0, paramIdx), true); - for (PsiMethod method : methods) { - results.add(new PsiMemberParameterizedLocation(project, method, aClass, paramName)); - } + results.add(paramName != null ? new PsiMemberParameterizedLocation(project, method, aClass, paramName) + : MethodLocation.elementInClass(method, aClass)); } } } diff --git a/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java b/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java index d42b741ad653..82e5f466788e 100644 --- a/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/JUnitRerunFailedTestsTest.java @@ -87,10 +87,10 @@ public class JUnitRerunFailedTestsTest extends LightCodeInsightFixtureTestCase final SMTestProxy rootProxy = new SMTestProxy("MyTest", true, "java:suite://MyTest"); rootProxy.setLocator(locationProvider); - final SMTestProxy proxyParam = new SMTestProxy("[0]", true, "java:suite://MyTest.[0]"); + final SMTestProxy proxyParam = new SMTestProxy("[0.java]", true, "java:suite://MyTest.[0.java]"); proxyParam.setLocator(locationProvider); - final SMTestProxy parameterizedTestProxy = new SMTestProxy("testName1[0]", false, "java:test://MyTest.testName1[0]"); + final SMTestProxy parameterizedTestProxy = new SMTestProxy("testName1[0.java]", false, "java:test://MyTest.testName1[0.java]"); parameterizedTestProxy.setLocator(locationProvider); final Location rootLocation = rootProxy.getLocation(project, searchScope); @@ -100,15 +100,15 @@ public class JUnitRerunFailedTestsTest extends LightCodeInsightFixtureTestCase final Location proxyParamLocation = proxyParam.getLocation(project, searchScope); assertNotNull(proxyParamLocation); assertInstanceOf(proxyParamLocation, PsiMemberParameterizedLocation.class); - assertEquals("[0]", ((PsiMemberParameterizedLocation)proxyParamLocation).getParamSetName()); + assertEquals("[0.java]", ((PsiMemberParameterizedLocation)proxyParamLocation).getParamSetName()); assertEquals(testClass, proxyParamLocation.getPsiElement()); final Location parameterizedTestProxyLocation = parameterizedTestProxy.getLocation(project, searchScope); assertNotNull(parameterizedTestProxyLocation); assertInstanceOf(parameterizedTestProxyLocation, PsiMemberParameterizedLocation.class); - assertEquals("[0]", ((PsiMemberParameterizedLocation)parameterizedTestProxyLocation).getParamSetName()); + assertEquals("[0.java]", ((PsiMemberParameterizedLocation)parameterizedTestProxyLocation).getParamSetName()); assertEquals(testClass.getMethods()[0], parameterizedTestProxyLocation.getPsiElement()); assertEquals(testClass, ((PsiMemberParameterizedLocation)parameterizedTestProxyLocation).getContainingClass()); - assertEquals("MyTest,testName1[0]", TestMethods.getTestPresentation(parameterizedTestProxy, project, searchScope)); + assertEquals("MyTest,testName1[0.java]", TestMethods.getTestPresentation(parameterizedTestProxy, project, searchScope)); } }