test discovery: use JVM names for inner classes otherwise they are not found on runtime

This commit is contained in:
Anna.Kozlova
2018-08-01 15:31:12 +02:00
parent 271dde57d5
commit 3d62c5f815
3 changed files with 12 additions and 20 deletions
@@ -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<JavaTestConfigurationWithDiscoverySupport> {
protected TestDiscoveryConfigurationProducer(ConfigurationType type) {
@@ -190,6 +191,15 @@ public abstract class TestDiscoveryConfigurationProducer extends JavaRunConfigur
return position != null && position.equals(getPosition(configuration));
}
protected static LinkedHashSet<String> collectMethodPatterns(@NotNull Location<PsiMethod>[] testMethods) {
return Arrays.stream(testMethods)
.map(method -> {
Iterator<Location<PsiClass>> 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>, RunConfiguration, ConfigurationWithCommandLineShortener, RunProfileWithCompileBeforeLaunchOption {
private final Location<PsiMethod>[] myTestMethods;
private final Module myModule;
@@ -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<Location<PsiClass>> 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<Module, Module> toRoot = splitModulesIntoChunks(testMethods, module);
return new TestsPattern((JUnitConfiguration)configuration, environment) {
@@ -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<Location<PsiClass>> 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);
}