From 3d62c5f815984cd5d711577232eafb6a7a2d5d62 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 1 Aug 2018 15:29:21 +0200 Subject: [PATCH] test discovery: use JVM names for inner classes otherwise they are not found on runtime --- .../TestDiscoveryConfigurationProducer.java | 10 ++++++++++ .../JUnitTestDiscoveryConfigurationProducer.java | 9 +-------- .../TestNGTestDiscoveryConfigurationProducer.java | 13 +------------ 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurationProducer.java b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurationProducer.java index 7672d5f14755..d7707d60769c 100644 --- a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurationProducer.java +++ b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurationProducer.java @@ -28,6 +28,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.*; +import java.util.stream.Collectors; public abstract class TestDiscoveryConfigurationProducer extends JavaRunConfigurationProducerBase { protected TestDiscoveryConfigurationProducer(ConfigurationType type) { @@ -190,6 +191,15 @@ public abstract class TestDiscoveryConfigurationProducer extends JavaRunConfigur return position != null && position.equals(getPosition(configuration)); } + protected static LinkedHashSet collectMethodPatterns(@NotNull Location[] testMethods) { + return Arrays.stream(testMethods) + .map(method -> { + Iterator> ancestors = method.getAncestors(PsiClass.class, true); + return JavaExecutionUtil.getRuntimeQualifiedName(ancestors.next().getPsiElement()) + "," + method.getPsiElement().getName(); + }) + .collect(Collectors.toCollection(LinkedHashSet::new)); + } + private class MyRunProfile implements WrappingRunConfiguration, RunConfiguration, ConfigurationWithCommandLineShortener, RunProfileWithCompileBeforeLaunchOption { private final Location[] myTestMethods; private final Module myModule; diff --git a/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java index 647ba1182d3f..fbce05e9a551 100644 --- a/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/testDiscovery/JUnitTestDiscoveryConfigurationProducer.java @@ -15,7 +15,6 @@ import com.intellij.execution.testDiscovery.TestDiscoveryConfigurationProducer; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.util.Pair; -import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.rt.execution.junit.JUnitStarter; import org.jetbrains.annotations.NotNull; @@ -54,13 +53,7 @@ public class JUnitTestDiscoveryConfigurationProducer extends TestDiscoveryConfig RunConfiguration configuration, ExecutionEnvironment environment) { JUnitConfiguration.Data data = ((JUnitConfiguration)configuration).getPersistentData(); - data.setPatterns( - Arrays.stream(testMethods) - .map(method -> { - Iterator> ancestors = method.getAncestors(PsiClass.class, true); - return ancestors.next().getPsiElement().getQualifiedName() + "," + method.getPsiElement().getName(); - }) - .collect(Collectors.toCollection(LinkedHashSet::new))); + data.setPatterns(collectMethodPatterns(testMethods)); data.TEST_OBJECT = JUnitConfiguration.TEST_PATTERN; Map toRoot = splitModulesIntoChunks(testMethods, module); return new TestsPattern((JUnitConfiguration)configuration, environment) { diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java index efbf3d45e026..c75a800ab2e0 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/testDiscovery/TestNGTestDiscoveryConfigurationProducer.java @@ -10,7 +10,6 @@ import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.testDiscovery.TestDiscoveryConfigurationProducer; import com.intellij.openapi.module.Module; import com.intellij.openapi.util.Pair; -import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.theoryinpractice.testng.configuration.TestNGConfiguration; import com.theoryinpractice.testng.configuration.TestNGConfigurationType; @@ -20,11 +19,6 @@ import com.theoryinpractice.testng.model.TestType; import com.theoryinpractice.testng.util.TestNGUtil; import org.jetbrains.annotations.NotNull; -import java.util.Arrays; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.stream.Collectors; - public class TestNGTestDiscoveryConfigurationProducer extends TestDiscoveryConfigurationProducer { protected TestNGTestDiscoveryConfigurationProducer() { super(TestNGConfigurationType.getInstance()); @@ -57,12 +51,7 @@ public class TestNGTestDiscoveryConfigurationProducer extends TestDiscoveryConfi RunConfiguration configuration, ExecutionEnvironment environment) { TestData data = ((TestNGConfiguration)configuration).getPersistantData(); - data.setPatterns(Arrays.stream(testMethods) - .map(method -> { - Iterator> ancestors = method.getAncestors(PsiClass.class, true); - return ancestors.next().getPsiElement().getQualifiedName() + "," + method.getPsiElement().getName(); - }) - .collect(Collectors.toCollection(LinkedHashSet::new))); + data.setPatterns(collectMethodPatterns(testMethods)); data.TEST_OBJECT = TestType.PATTERN.type; return new TestNGRunnableState(environment, (TestNGConfiguration)configuration); }