Delete Android JUnit code & enable GRADLE test runner per default.

This should help us avoid problems related to the upcoming PLATFORM
merge happening next week.

Bug: 173775738
Bug: 165193589
Test: this is a cleanup change, GRADLE tests are to come  in future
changes.

Change-Id: I694bbbd18da437dacb561c83cb9bff48a36133e0
diff --git a/android-common/src/com/android/tools/idea/flags/StudioFlags.java b/android-common/src/com/android/tools/idea/flags/StudioFlags.java
index ebdce87..fe8ce3f 100755
--- a/android-common/src/com/android/tools/idea/flags/StudioFlags.java
+++ b/android-common/src/com/android/tools/idea/flags/StudioFlags.java
@@ -534,14 +534,6 @@
     "Enables Studio to understand feature-on-feature dependencies when launching dynamic apps.",
     false
   );
-
-  public static final Flag<Boolean> GRADLE_UNIT_TESTING = Flag.create(
-    RUNDEBUG,
-    "run.unit.tests.via.gradle",
-    "Run Android unit tests through Gradle",
-    "Switch to running unit tests via Gradle Tooling API instead of JUnit",
-    false
-  );
   //endregion
 
   //region Gradle Project System
diff --git a/android-test-framework/testSrc/com/android/tools/idea/testartifacts/TestConfigurationTesting.java b/android-test-framework/testSrc/com/android/tools/idea/testartifacts/TestConfigurationTesting.java
index f239794..2b4f8eb 100644
--- a/android-test-framework/testSrc/com/android/tools/idea/testartifacts/TestConfigurationTesting.java
+++ b/android-test-framework/testSrc/com/android/tools/idea/testartifacts/TestConfigurationTesting.java
@@ -17,7 +17,6 @@
 
 import com.google.common.annotations.VisibleForTesting;
 import com.android.tools.idea.testartifacts.instrumented.AndroidTestRunConfiguration;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration;
 import com.intellij.execution.Location;
 import com.intellij.execution.PsiLocation;
 import com.intellij.execution.RunManager;
@@ -41,7 +40,7 @@
 import static org.junit.Assert.assertNotNull;
 
 /**
- * Collection of utility methods for testing {@link AndroidTestRunConfiguration}s, {@link AndroidJUnitConfiguration}s and their interactions
+ * Collection of utility methods for testing {@link AndroidTestRunConfiguration}s.
  */
 public class TestConfigurationTesting {
   @Nullable
@@ -50,26 +49,11 @@
   }
 
   @Nullable
-  public static AndroidJUnitConfiguration createJUnitConfigurationFromClass(@NotNull Project project, @NotNull String qualifiedName) {
-    return createConfigurationFromClass(project, qualifiedName, AndroidJUnitConfiguration.class);
-  }
-
-  @Nullable
-  public static AndroidJUnitConfiguration createJUnitConfigurationFromDirectory(@NotNull Project project, @NotNull String directory) {
-    return createConfigurationFromDirectory(project, directory, AndroidJUnitConfiguration.class);
-  }
-
-  @Nullable
   public static AndroidTestRunConfiguration createAndroidTestConfigurationFromDirectory(@NotNull Project project, @NotNull String directory) {
     return createConfigurationFromDirectory(project, directory, AndroidTestRunConfiguration.class);
   }
 
   @Nullable
-  public static AndroidJUnitConfiguration createJUnitConfigurationFromFile(@NotNull Project project, @NotNull String file) {
-    return createConfigurationFromFile(project, file, AndroidJUnitConfiguration.class);
-  }
-
-  @Nullable
   public static AndroidTestRunConfiguration createAndroidTestConfigurationFromFile(@NotNull Project project, @NotNull String file) {
     return createConfigurationFromFile(project, file, AndroidTestRunConfiguration.class);
   }
@@ -125,7 +109,7 @@
     runManager.addConfiguration(settings);
 
     RunConfiguration configuration = settings.getConfiguration();
-    if (configuration instanceof AndroidTestRunConfiguration || configuration instanceof AndroidJUnitConfiguration) {
+    if (configuration instanceof AndroidTestRunConfiguration) {
       return configuration;
     }
     return null;
diff --git a/android/src/META-INF/android-junit.xml b/android/src/META-INF/android-junit.xml
deleted file mode 100644
index 0c9125c..0000000
--- a/android/src/META-INF/android-junit.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
-  ~ Copyright (C) 2016 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<idea-plugin>
-  <extensions defaultExtensionNs="com.intellij">
-    <runConfigurationProducer implementation="com.android.tools.idea.testartifacts.junit.TestDirectoryAndroidConfigurationProducer"/>
-    <runConfigurationProducer implementation="com.android.tools.idea.testartifacts.junit.TestPackageAndroidConfigurationProducer"/>
-    <runConfigurationProducer implementation="com.android.tools.idea.testartifacts.junit.TestClassAndroidConfigurationProducer"/>
-    <runConfigurationProducer implementation="com.android.tools.idea.testartifacts.junit.TestMethodAndroidConfigurationProducer"/>
-    <runConfigurationProducer implementation="com.android.tools.idea.testartifacts.junit.TestPatternConfigurationProducer"/>
-    <configurationType implementation="com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationType"/>
-  </extensions>
-
-  <actions>
-    <group>
-      <action class="com.android.tools.idea.testartifacts.junit.AndroidJUnitExcludeFromRunAction" text="Exclude from suite" id="androidExcludeFromSuite"/>
-      <separator/>
-      <add-to-group relative-to-action="openAssertEqualsDiff" anchor="after" group-id="TestTreePopupMenu"/>
-    </group>
-    <group>
-      <action class="com.android.tools.idea.testartifacts.junit.AndroidJUnitAddToTestsPatternAction" id="androidAddToISuite" text="Add to Android JUnit pattern suite"/>
-      <add-to-group anchor="last" group-id="RunContextGroup"/>
-    </group>
-  </actions>
-</idea-plugin>
diff --git a/android/src/META-INF/android-plugin.xml b/android/src/META-INF/android-plugin.xml
index 8570483..c07c7c5 100644
--- a/android/src/META-INF/android-plugin.xml
+++ b/android/src/META-INF/android-plugin.xml
@@ -32,7 +32,6 @@
   <depends optional="true" config-file="database-support.xml">com.intellij.database</depends>
 
   <xi:include href="android-kotlin.xml" xpointer="xpointer(/idea-plugin/*)"/>
-  <xi:include href="android-junit.xml" xpointer="xpointer(/idea-plugin/*)"/>
   <xi:include href="/org/jetbrains/android/dom/android-xml.xml" xpointer="xpointer(/idea-plugin/*)"/>
   <xi:include href="/com/android/tools/idea/lint/android-lint.xml" xpointer="xpointer(/idea-plugin/*)"/>
 
@@ -752,7 +751,6 @@
     <spellchecker.support language="JSON" implementationClass="org.jetbrains.android.spellchecker.GoogleServicesJsonSpellcheckingStrategy" order="first"/>
     <spellchecker.support language="Shell Script" implementationClass="org.jetbrains.android.spellchecker.AndroidShellSpellcheckingStrategy" order="first"/>
     <deadCode implementation="org.jetbrains.android.inspections.AndroidComponentEntryPoint"/>
-    <junitPatcher implementation="com.android.tools.idea.testartifacts.scopes.AndroidJunitPatcher" />
 
     <debugger.nodeRenderer implementation="com.android.tools.idea.debug.BitmapRenderer" />
     <debugger.nodeRenderer implementation="com.android.tools.idea.debug.BitmapDrawableRenderer" />
diff --git a/android/src/META-INF/androidstudio.xml b/android/src/META-INF/androidstudio.xml
index c71cda2..fd365a5 100755
--- a/android/src/META-INF/androidstudio.xml
+++ b/android/src/META-INF/androidstudio.xml
@@ -161,7 +161,6 @@
                              displayName="Memory Settings"
                              provider="com.android.tools.idea.memorysettings.MemorySettingsConfigurableProvider"
                              id="memory.settings"/>
-    <project.converterProvider implementation="com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationConverterProvider"/>
 
     <statistic.eventLog.eventLoggerProvider implementation="com.android.tools.idea.stats.AndroidStudioStatisticsEventLoggerProvider"/>
   </extensions>
diff --git a/android/src/com/android/tools/idea/gradle/project/AndroidStudioGradleSettings.java b/android/src/com/android/tools/idea/gradle/project/AndroidStudioGradleSettings.java
index 93a1a7d..eaa7657 100644
--- a/android/src/com/android/tools/idea/gradle/project/AndroidStudioGradleSettings.java
+++ b/android/src/com/android/tools/idea/gradle/project/AndroidStudioGradleSettings.java
@@ -37,12 +37,7 @@
 
   static void configureForAndroidStudio(@NotNull GradleProjectSettings projectSettings) {
     projectSettings.setResolveModulePerSourceSet(StudioFlags.USE_MODULE_PER_SOURCE_SET.get());
-    if (!StudioFlags.GRADLE_UNIT_TESTING.get()) {
-      projectSettings.setTestRunner(TestRunner.PLATFORM);
-    }
-    else {
-      projectSettings.setTestRunner(TestRunner.GRADLE);
-    }
+    projectSettings.setTestRunner(TestRunner.GRADLE);
     projectSettings.setUseQualifiedModuleNames(true);
   }
 }
diff --git a/android/src/com/android/tools/idea/startup/AndroidStudioInitializer.java b/android/src/com/android/tools/idea/startup/AndroidStudioInitializer.java
index f6795ab..6c6585c 100644
--- a/android/src/com/android/tools/idea/startup/AndroidStudioInitializer.java
+++ b/android/src/com/android/tools/idea/startup/AndroidStudioInitializer.java
@@ -34,14 +34,9 @@
 import com.android.tools.idea.serverflags.ServerFlagInitializer;
 import com.android.tools.idea.stats.AndroidStudioUsageTracker;
 import com.android.tools.idea.stats.GcPauseWatcher;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationProducer;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationType;
 import com.intellij.analytics.AndroidStudioAnalytics;
 import com.intellij.concurrency.JobScheduler;
 import com.intellij.execution.actions.RunConfigurationProducer;
-import com.intellij.execution.configurations.ConfigurationType;
-import com.intellij.execution.junit.JUnitConfigurationProducer;
-import com.intellij.execution.junit.JUnitConfigurationType;
 import com.intellij.ide.fileTemplates.FileTemplate;
 import com.intellij.ide.fileTemplates.FileTemplateManager;
 import com.intellij.lang.injection.MultiHostInjector;
@@ -96,7 +91,6 @@
     scheduler.execute(ServerFlagDownloader::downloadServerFlagList);
 
     setupAnalytics();
-    disableIdeaJUnitConfigurations(actionManager);
     disableKaptImportHandlers();
     hideRarelyUsedIntellijActions(actionManager);
     setupResourceManagerActions(actionManager);
@@ -259,34 +253,6 @@
     resolverExtensionPoint.unregisterExtension(KaptProjectResolverExtension.class);
   }
 
-  // JUnit original Extension JUnitConfigurationType is disabled so it can be replaced by its child class AndroidJUnitConfigurationType
-  private static void disableIdeaJUnitConfigurations(ActionManager actionManager) {
-    // First we unregister the ConfigurationProducers, and after the ConfigurationType
-
-    //noinspection rawtypes: RunConfigurationProducer.EP_NAME uses raw types.
-    ExtensionPoint<RunConfigurationProducer> configurationProducerExtensionPoint = RunConfigurationProducer.EP_NAME.getPoint();
-    //noinspection rawtypes: RunConfigurationProducer.EP_NAME uses raw types.
-    for (RunConfigurationProducer runConfigurationProducer : configurationProducerExtensionPoint.getExtensions()) {
-      if (runConfigurationProducer instanceof JUnitConfigurationProducer
-          && !(runConfigurationProducer instanceof AndroidJUnitConfigurationProducer)) {
-        // In AndroidStudio these ConfigurationProducer s are replaced
-        configurationProducerExtensionPoint.unregisterExtension(runConfigurationProducer.getClass());
-      }
-    }
-
-    ExtensionPoint<ConfigurationType> configurationTypeExtensionPoint = ConfigurationType.CONFIGURATION_TYPE_EP.getPoint();
-    for (ConfigurationType configurationType : configurationTypeExtensionPoint.getExtensions()) {
-      if (configurationType instanceof JUnitConfigurationType && !(configurationType instanceof AndroidJUnitConfigurationType)) {
-        // In Android Studio the user is forced to use AndroidJUnitConfigurationType instead of JUnitConfigurationType
-        configurationTypeExtensionPoint.unregisterExtension(configurationType.getClass());
-      }
-    }
-
-    // We hide actions registered by the JUnit plugin and instead we use those registered in android-junit.xml
-    Actions.hideAction(actionManager, "excludeFromSuite");
-    Actions.hideAction(actionManager, "AddToISuite");
-  }
-
   private static void hideRarelyUsedIntellijActions(ActionManager actionManager) {
     // Hide the Save File as Template action due to its rare use in Studio.
     Actions.hideAction(actionManager, "SaveFileAsTemplate");
diff --git a/android/src/com/android/tools/idea/stats/AnalyticsTestRunnerEventsListener.kt b/android/src/com/android/tools/idea/stats/AnalyticsTestRunnerEventsListener.kt
index 016b262..dcc4650 100644
--- a/android/src/com/android/tools/idea/stats/AnalyticsTestRunnerEventsListener.kt
+++ b/android/src/com/android/tools/idea/stats/AnalyticsTestRunnerEventsListener.kt
@@ -19,20 +19,17 @@
 import com.android.tools.analytics.recordTestLibrary
 import com.android.tools.idea.gradle.project.model.AndroidModuleModel
 import com.android.tools.idea.gradle.project.model.JavaModuleModel
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration
 import com.android.tools.idea.util.androidFacet
 import com.google.wireless.android.sdk.stats.AndroidStudioEvent
 import com.google.wireless.android.sdk.stats.TestLibraries
 import com.google.wireless.android.sdk.stats.TestRun
 import com.intellij.execution.ExecutionListener
-import com.intellij.execution.ExecutionManager
+import com.intellij.execution.junit.JUnitConfiguration
 import com.intellij.execution.process.ProcessHandler
 import com.intellij.execution.runners.ExecutionEnvironment
 import com.intellij.execution.testframework.sm.runner.SMTRunnerEventsAdapter
-import com.intellij.execution.testframework.sm.runner.SMTRunnerEventsListener
 import com.intellij.execution.testframework.sm.runner.SMTestProxy
 import com.intellij.openapi.application.runReadAction
-import com.intellij.openapi.components.ProjectComponent
 import com.intellij.openapi.module.Module
 import com.intellij.openapi.project.Project
 import com.intellij.openapi.util.Key
@@ -49,7 +46,8 @@
   }
 
   override fun processStarted(executorId: String, env: ExecutionEnvironment, handler: ProcessHandler) {
-    val runConfiguration = env.runProfile as? AndroidJUnitConfiguration ?: return
+    // TODO(karimai): add tracking gradle test run configuration.
+    val runConfiguration = env.runProfile as? JUnitConfiguration ?: return
 
     val testRunProtoBuilder = TestRun.newBuilder().apply {
       testInvocationType = TestRun.TestInvocationType.ANDROID_STUDIO_TEST
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitAddToTestsPatternAction.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitAddToTestsPatternAction.java
deleted file mode 100644
index 5c1f276..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitAddToTestsPatternAction.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.actions.AbstractAddToTestsPatternAction;
-import com.intellij.execution.actions.RunConfigurationProducer;
-import com.intellij.execution.configurations.ConfigurationType;
-import com.intellij.execution.junit.JUnitConfiguration;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.Set;
-
-public class AndroidJUnitAddToTestsPatternAction extends AbstractAddToTestsPatternAction<AndroidJUnitConfiguration> {
-
-  @Override
-  @NotNull
-  protected TestPatternConfigurationProducer getPatternBasedProducer() {
-    return RunConfigurationProducer.getInstance(TestPatternConfigurationProducer.class);
-  }
-
-  @Override
-  @NotNull
-  protected ConfigurationType getConfigurationType() {
-    return AndroidJUnitConfigurationType.getInstance();
-  }
-
-  @Override
-  protected boolean isPatternBasedConfiguration(AndroidJUnitConfiguration configuration) {
-    return configuration.getPersistentData().TEST_OBJECT == JUnitConfiguration.TEST_PATTERN;
-  }
-
-  @Override
-  protected Set<String> getPatterns(AndroidJUnitConfiguration configuration) {
-    return configuration.getPersistentData().getPatterns();
-  }
-}
\ No newline at end of file
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurable.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurable.java
deleted file mode 100644
index 7bd5477..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurable.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.junit2.configuration.JUnitConfigurable;
-import com.intellij.openapi.project.Project;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * Android implementation of {@link JUnitConfigurable} so some behaviors can be overridden.
- */
-public class AndroidJUnitConfigurable extends JUnitConfigurable<AndroidJUnitConfiguration> {
-  public AndroidJUnitConfigurable(@NotNull Project project) {
-    super(project);
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfiguration.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfiguration.java
deleted file mode 100644
index 3aea340..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfiguration.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.diagnostic.logging.LogConfigurationPanel;
-import com.intellij.execution.ExecutionBundle;
-import com.intellij.execution.ExecutionException;
-import com.intellij.execution.Executor;
-import com.intellij.execution.JavaRunConfigurationExtensionManager;
-import com.intellij.execution.configurations.ConfigurationFactory;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.executors.DefaultRunExecutor;
-import com.intellij.execution.junit.JUnitConfiguration;
-import com.intellij.execution.junit.TestObject;
-import com.intellij.execution.runners.ExecutionEnvironment;
-import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
-import com.intellij.execution.testframework.TestSearchScope;
-import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModuleUtilCore;
-import com.intellij.openapi.options.SettingsEditor;
-import com.intellij.openapi.options.SettingsEditorGroup;
-import com.intellij.openapi.project.Project;
-import java.util.HashSet;
-import java.util.Set;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * Android implementation of {@link JUnitConfiguration} so some behaviors can be overridden.
- */
-public class AndroidJUnitConfiguration extends JUnitConfiguration {
-  public AndroidJUnitConfiguration(@NotNull Project project, @NotNull ConfigurationFactory configurationFactory) {
-    super(project, new JUnitConfiguration.Data() {
-      @Override
-      public TestObject getTestObject(@NotNull JUnitConfiguration configuration) {
-        AndroidTestObject testObject = fromString(TEST_OBJECT, configuration, ExecutionEnvironmentBuilder.create(
-          DefaultRunExecutor.getRunExecutorInstance(), configuration).build());
-        return testObject != null ? testObject : super.getTestObject(configuration);
-      }
-    }, configurationFactory);
-  }
-
-  @Override
-  public TestObject getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException {
-    AndroidTestObject testObject = fromString(getPersistentData().TEST_OBJECT, this, env);
-    return testObject != null ? testObject : super.getState(executor, env);
-  }
-
-  @NotNull
-  @Override
-  public SMTRunnerConsoleProperties createTestConsoleProperties(@NotNull Executor executor) {
-    return new AndroidJUnitConsoleProperties(this, executor);
-  }
-
-  @Override
-  @NotNull
-  public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() {
-    SettingsEditorGroup<AndroidJUnitConfiguration> group = new SettingsEditorGroup<>();
-    group.addEditor(ExecutionBundle.message("run.configuration.configuration.tab.title"), new AndroidJUnitConfigurable(getProject()));
-    JavaRunConfigurationExtensionManager.getInstance().appendEditors(this, group);
-    group.addEditor(ExecutionBundle.message("logs.tab.title"), new LogConfigurationPanel<>());
-    return group;
-  }
-
-  @NotNull
-  public Module[] getModulesToCompile() {
-    if (TEST_PACKAGE.equals(getPersistentData().TEST_OBJECT)) {
-      TestSearchScope scope = getPersistentData().getScope();
-      if (scope == TestSearchScope.WHOLE_PROJECT) {
-        return getAllModules().toArray(Module.EMPTY_ARRAY);
-      }
-      if (scope == TestSearchScope.MODULE_WITH_DEPENDENCIES) {
-        Module classpathModule = getConfigurationModule().getModule();
-        if (classpathModule != null) {
-          Set<Module> modules = new HashSet<>();
-          ModuleUtilCore.getDependencies(classpathModule, modules);
-          return modules.toArray(Module.EMPTY_ARRAY);
-        }
-      }
-    }
-
-    return getModules();
-  }
-
-  private static AndroidTestObject fromString(String id,
-                                              @NotNull JUnitConfiguration configuration,
-                                              @NotNull ExecutionEnvironment environment) {
-    if (JUnitConfiguration.TEST_PACKAGE.equals(id)) {
-      return new AndroidTestObject(new AndroidTestPackage(configuration, environment));
-    }
-    if (JUnitConfiguration.TEST_PATTERN.equals(id)) {
-      return new AndroidTestObject(new AndroidTestsPattern(configuration, environment));
-    }
-    return null;
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverter.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverter.java
deleted file mode 100644
index 1e423d9..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.IdeInfo;
-import com.intellij.conversion.CannotConvertException;
-import com.intellij.conversion.ConversionProcessor;
-import com.intellij.conversion.ProjectConverter;
-import com.intellij.conversion.RunManagerSettings;
-import org.jdom.Element;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-/**
- * {@link ProjectConverter} to convert {@link com.intellij.execution.junit.JUnitConfiguration}s to {@link AndroidJUnitConfiguration}s.
- * They are converted only in Android Studio.
- */
-public class AndroidJUnitConfigurationConverter extends ProjectConverter {
-  // Same as RunnerAndConfigurationSettingsImpl.CONFIGURATION_TYPE_ATTRIBUTE
-  static final String CONFIGURATION_TYPE_ATTRIBUTE = "type";
-  // Same as RunnerAndConfigurationSettingsImpl.FACTORY_NAME_ATTRIBUTE
-  static final String FACTORY_NAME_ATTRIBUTE = "factoryName";
-  // Same as RunnerAndConfigurationSettingsImpl.TEMPLATE_FLAG_ATTRIBUTE
-  static final String TEMPLATE_FLAG_ATTRIBUTE = "default";
-  // Same as JUnitConfigurationType#getId()
-  static final String JUNIT_CONFIGURATION_TYPE = "JUnit";
-  // Same as JUnitConfigurationType#getDisplayName()
-  static final String JUNIT_CONFIGURATION_FACTORY_NAME = "JUnit";
-  // Same as AndroidJUnitConfigurationType#getId()
-  static final String ANDROID_JUNIT_CONFIGURATION_TYPE = "AndroidJUnit";
-  // Same as AndroidJUnitConfigurationType#getDisplayName()
-  static final String ANDROID_JUNIT_CONFIGURATION_FACTORY_NAME = "Android JUnit";
-
-  @NotNull
-  @Override
-  public ConversionProcessor<RunManagerSettings> createRunConfigurationsConverter() {
-    return new ConversionProcessor<RunManagerSettings>() {
-      @Override
-      public boolean isConversionNeeded(RunManagerSettings settings) {
-        return !getConfigurationsToConvert(settings).isEmpty();
-      }
-
-      @Override
-      public void process(RunManagerSettings settings) throws CannotConvertException {
-        // Converts the factory identifications from JUnitConfigurationType to AndroidJUnitConfigurationType
-        for (Element element : getConfigurationsToConvert(settings)) {
-          element.setAttribute(CONFIGURATION_TYPE_ATTRIBUTE, ANDROID_JUNIT_CONFIGURATION_TYPE);
-          element.setAttribute(FACTORY_NAME_ATTRIBUTE, ANDROID_JUNIT_CONFIGURATION_FACTORY_NAME);
-        }
-      }
-
-      @NotNull
-      private Collection<Element> getConfigurationsToConvert(RunManagerSettings settings) {
-        Collection<? extends Element> configurationElements = settings.getRunConfigurations();
-        Collection<Element> toConvert = new HashSet<>();
-
-        // Searches for RunConfiguration persistent elements of type JUnit and adds them to the ones to be converted
-        for (Element element : configurationElements) {
-          String typeName = element.getAttributeValue(CONFIGURATION_TYPE_ATTRIBUTE);
-          String factoryName = element.getAttributeValue(FACTORY_NAME_ATTRIBUTE);
-          Boolean isTemplate = Boolean.valueOf(element.getAttributeValue(TEMPLATE_FLAG_ATTRIBUTE)).booleanValue();
-          if (!isTemplate && typeName.equals(JUNIT_CONFIGURATION_TYPE) && factoryName.equals(JUNIT_CONFIGURATION_FACTORY_NAME)) {
-            toConvert.add(element);
-          }
-        }
-        return toConvert;
-      }
-    };
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverterProvider.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverterProvider.java
deleted file mode 100644
index a348471..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverterProvider.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.IdeInfo;
-import com.intellij.conversion.ConversionContext;
-import com.intellij.conversion.ConverterProvider;
-import com.intellij.conversion.ProjectConverter;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * {@link ConverterProvider} providing {@link AndroidJUnitConfigurationConverter}.
- */
-public class AndroidJUnitConfigurationConverterProvider extends ConverterProvider {
-  protected AndroidJUnitConfigurationConverterProvider() {
-    super("junit-to-android-junit-configurations");
-  }
-
-  @NotNull
-  @Override
-  public String getConversionDescription() {
-    return "RunConfigurations of type JUnitConfiguration will be converted to AndroidJUnitConfiguration. "
-      + "JUnit tests and Android Instrumented tests will work properly together.";
-  }
-
-  @NotNull
-  @Override
-  public ProjectConverter createConverter(@NotNull ConversionContext context) {
-    return new AndroidJUnitConfigurationConverter();
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationProducer.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationProducer.java
deleted file mode 100644
index 25728ba..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationProducer.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-/**
- * Indicates that instance of {@link com.intellij.execution.actions.RunConfigurationProducer} is used in Android projects.
- */
-public interface AndroidJUnitConfigurationProducer {
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationType.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationType.java
deleted file mode 100644
index 8fc9f9d..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationType.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.IdeInfo;
-import com.android.tools.idea.help.AndroidWebHelpProvider;
-import com.intellij.execution.configuration.ConfigurationFactoryEx;
-import com.intellij.execution.configurations.ConfigurationFactory;
-import com.intellij.execution.configurations.ConfigurationTypeUtil;
-import com.intellij.execution.configurations.ModuleBasedConfiguration;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.junit.JUnitConfigurationType;
-import com.intellij.icons.AllIcons;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.NotNullLazyValue;
-import com.intellij.ui.LayeredIcon;
-import icons.StudioIcons;
-import org.jetbrains.annotations.NotNull;
-
-import javax.swing.*;
-
-/**
- * Android implementation of {@link JUnitConfigurationType} for running local unit tests. Dual test scopes is supported.
- */
-public class AndroidJUnitConfigurationType extends JUnitConfigurationType {
-  private static final String ANDROID_JUNIT_DESCRIPTION = "Android JUnit test configuration";
-  private static final String ANDROID_JUNIT_NAME = "Android JUnit";
-  private static final String ANDROID_JUNIT_ID = "AndroidJUnit";
-  private static final NotNullLazyValue<Icon> ANDROID_TEST_ICON = new NotNullLazyValue<Icon>() {
-    @NotNull
-    @Override
-    protected Icon compute() {
-      LayeredIcon icon = new LayeredIcon(2);
-      icon.setIcon(StudioIcons.Shell.Filetree.ANDROID_PROJECT, 0);
-      icon.setIcon(AllIcons.Nodes.JunitTestMark, 1);
-      return icon;
-    }
-  };
-
-  private final ConfigurationFactory myFactory;
-
-  public AndroidJUnitConfigurationType() {
-    myFactory = new ConfigurationFactoryEx(this) {
-      @NotNull
-      @Override
-      public RunConfiguration createTemplateConfiguration(@NotNull Project project) {
-        AndroidJUnitConfiguration configuration = new AndroidJUnitConfiguration(project, this);
-        configuration.setVMParameters("-ea");
-        configuration.setWorkingDirectory("$MODULE_DIR$");
-        return configuration;
-      }
-
-      @Override
-      public @NotNull String getId() {
-        // This string must be non-localized.
-        return ANDROID_JUNIT_NAME;
-      }
-
-      @Override
-      public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) {
-        ((ModuleBasedConfiguration)configuration).onNewConfigurationCreated();
-      }
-    };
-  }
-
-  @Override
-  @NotNull
-  public String getDisplayName() {
-    return ANDROID_JUNIT_NAME;
-  }
-
-  @Override
-  public String getConfigurationTypeDescription() {
-    return ANDROID_JUNIT_DESCRIPTION;
-  }
-
-  @Override
-  public Icon getIcon() {
-    // Uses the standard JUnit icon if in AndroidStudio and otherwise, another icon
-    return IdeInfo.getInstance().isAndroidStudio() ? AllIcons.RunConfigurations.Junit : ANDROID_TEST_ICON.getValue();
-  }
-
-  @Override
-  public ConfigurationFactory[] getConfigurationFactories() {
-    return new ConfigurationFactory[]{myFactory};
-  }
-
-  @Override
-  @NotNull
-  public String getId() {
-    return ANDROID_JUNIT_ID;
-  }
-
-  @NotNull
-  public static AndroidJUnitConfigurationType getInstance() {
-    return ConfigurationTypeUtil.findConfigurationType(AndroidJUnitConfigurationType.class);
-  }
-
-  @Override
-  public String getHelpTopic() {
-    return AndroidWebHelpProvider.HELP_PREFIX + "r/studio-ui/rundebugconfig.html";
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurations.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurations.java
deleted file mode 100644
index c5a6be4..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurations.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.AndroidPsiUtils;
-import com.android.tools.idea.gradle.util.GradleProjects;
-import com.intellij.execution.*;
-import com.intellij.execution.actions.ConfigurationContext;
-import com.intellij.execution.actions.ConfigurationFromContext;
-import com.intellij.execution.actions.RunConfigurationProducer;
-import com.intellij.execution.configurations.ConfigurationFactory;
-import com.intellij.execution.configurations.ModuleBasedConfiguration;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.junit.JUnitConfiguration;
-import com.intellij.execution.junit.JUnitUtil;
-import com.intellij.execution.junit.PatternConfigurationProducer;
-import com.intellij.execution.junit.TestObject;
-import com.intellij.openapi.module.Module;
-import com.intellij.psi.*;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-/**
- * Common code for the {@link RunConfigurationProducer}s in Android JUnit configurations.
- */
-public class AndroidJUnitConfigurations {
-  public static boolean shouldUseAndroidJUnitConfigurations(@NotNull ConfigurationFromContext self,
-                                                            @NotNull ConfigurationFromContext other) {
-    RunConfiguration androidConfiguration = self.getConfiguration();
-    RunConfiguration otherConfiguration = other.getConfiguration();
-    if (androidConfiguration instanceof ModuleBasedConfiguration &&
-        (otherConfiguration instanceof JUnitConfiguration) &&
-        !(otherConfiguration instanceof AndroidJUnitConfiguration)) {
-      Module module = ((ModuleBasedConfiguration)androidConfiguration).getConfigurationModule().getModule();
-      if (module != null && GradleProjects.isIdeaAndroidModule(module)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public static boolean isFromContext(@NotNull JUnitConfiguration junitConfiguration,
-                                      @NotNull ConfigurationContext context,
-                                      @NotNull ConfigurationFactory configurationFactory) {
-    if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
-      return false;
-    }
-
-    Location contextLocation = context.getLocation();
-    if (contextLocation == null) {
-      return false;
-    }
-
-    PsiElement leaf = contextLocation.getPsiElement();
-    Location<PsiMethod> methodLocation = getTestMethodLocation(leaf);
-    PsiClass testClass = getTestClass(leaf);
-    TestObject testObject = junitConfiguration.getTestObject();
-
-    if (!testObject.isConfiguredByElement(junitConfiguration, testClass, methodLocation == null ? null : methodLocation.getPsiElement(), null, null)) {
-      return false;
-    }
-
-    return settingsMatchTemplate(junitConfiguration, context, configurationFactory);
-  }
-
-  private static boolean settingsMatchTemplate(@NotNull JUnitConfiguration junitConfiguration,
-                                               @NotNull ConfigurationContext configurationContext,
-                                               @NotNull ConfigurationFactory configurationFactory) {
-    RunConfiguration predefinedConfiguration = configurationContext.getOriginalConfiguration(AndroidJUnitConfigurationType.getInstance());
-
-    if (predefinedConfiguration != null && predefinedConfiguration instanceof CommonJavaRunConfigurationParameters) {
-      String vmParameters = ((CommonJavaRunConfigurationParameters)predefinedConfiguration).getVMParameters();
-      if (vmParameters != null && !junitConfiguration.getVMParameters().equals(vmParameters)) {
-        return false;
-      }
-    }
-
-    RunnerAndConfigurationSettings template = RunManager.getInstance(junitConfiguration.getProject()).getConfigurationTemplate(configurationFactory);
-    Module predefinedModule = ((ModuleBasedConfiguration)template.getConfiguration()).getConfigurationModule().getModule();
-    Module configurationModule = junitConfiguration.getConfigurationModule().getModule();
-    Module contextModule = configurationContext.getLocation() == null ? null : configurationContext.getLocation().getModule();
-
-    return configurationModule == contextModule || configurationModule == predefinedModule;
-  }
-
-  @Nullable
-  private static PsiClass getTestClass(@NotNull PsiElement leaf) {
-    PsiClass psiClass = AndroidPsiUtils.getPsiParentOfType(leaf, PsiClass.class, false);
-    if (psiClass != null && JUnitUtil.isTestClass(psiClass)) {
-      return psiClass;
-    }
-    return null;
-  }
-
-  @Nullable
-  private static Location<PsiMethod> getTestMethodLocation(@NotNull PsiElement leaf) {
-    PsiMethod method = AndroidPsiUtils.getPsiParentOfType(leaf, PsiMethod.class, false);
-    if (method != null) {
-      Location<PsiMethod> methodLocation = PsiLocation.fromPsiElement(method);
-      if (methodLocation != null && JUnitUtil.isTestMethod(methodLocation, false)) {
-        return methodLocation;
-      }
-    }
-    return null;
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConsoleProperties.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConsoleProperties.java
deleted file mode 100644
index fef86f2..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitConsoleProperties.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.projectsystem.TestArtifactSearchScopes;
-import com.intellij.execution.Executor;
-import com.intellij.execution.junit2.ui.properties.JUnitConsoleProperties;
-import com.intellij.openapi.module.Module;
-import com.intellij.psi.search.GlobalSearchScope;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * Android implementation of {@link JUnitConsoleProperties} so some behaviors can be overridden.
- */
-public class AndroidJUnitConsoleProperties extends JUnitConsoleProperties {
-  public AndroidJUnitConsoleProperties(@NotNull AndroidJUnitConfiguration configuration,
-                                       Executor executor) {
-    super(configuration, executor);
-  }
-
-  @NotNull
-  @Override
-  protected GlobalSearchScope initScope() {
-    GlobalSearchScope scope = super.initScope();
-
-    for (Module each : getConfiguration().getModules()) {
-      // AndroidTest scope in each module is excluded from the scope used to find JUnitTests
-      TestArtifactSearchScopes testArtifactSearchScopes = TestArtifactSearchScopes.getInstance(each);
-      if (testArtifactSearchScopes != null) {
-        scope = scope.intersectWith(GlobalSearchScope.notScope(testArtifactSearchScopes.getAndroidTestSourceScope()));
-      }
-    }
-    return scope;
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitExcludeFromRunAction.java b/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitExcludeFromRunAction.java
deleted file mode 100644
index 350ac1f..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidJUnitExcludeFromRunAction.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2000-2010 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.actions.AbstractExcludeFromRunAction;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.junit.JUnitConfiguration;
-
-import java.util.Set;
-
-public class AndroidJUnitExcludeFromRunAction extends AbstractExcludeFromRunAction<AndroidJUnitConfiguration> {
-
-  @Override
-  protected Set<String> getPattern(AndroidJUnitConfiguration configuration) {
-    return configuration.getPersistentData().getPatterns();
-  }
-
-  @Override
-  protected boolean isPatternBasedConfiguration(RunConfiguration configuration) {
-    return configuration instanceof AndroidJUnitConfiguration &&
-           ((AndroidJUnitConfiguration)configuration).getPersistentData().TEST_OBJECT == JUnitConfiguration.TEST_PATTERN;
-  }
-}
\ No newline at end of file
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/AndroidTestObjects.kt b/android/src/com/android/tools/idea/testartifacts/junit/AndroidTestObjects.kt
deleted file mode 100644
index 74503a8..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/AndroidTestObjects.kt
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit
-
-import com.android.tools.idea.projectsystem.TestArtifactSearchScopes
-import com.google.common.annotations.VisibleForTesting
-import com.intellij.execution.Executor
-import com.intellij.execution.junit.JUnitConfiguration
-import com.intellij.execution.junit.TestClassFilter
-import com.intellij.execution.junit.TestObject
-import com.intellij.execution.junit.TestPackage
-import com.intellij.execution.junit.TestsPattern
-import com.intellij.execution.runners.ExecutionEnvironment
-import com.intellij.execution.runners.ProgramRunner
-import com.intellij.execution.testframework.SourceScope
-import com.intellij.openapi.module.Module
-import com.intellij.openapi.project.Project
-import com.intellij.psi.PsiClass
-import com.intellij.psi.PsiDirectory
-import com.intellij.psi.PsiElement
-import com.intellij.psi.PsiMethod
-import com.intellij.psi.PsiPackage
-import com.intellij.psi.search.GlobalSearchScope
-import com.intellij.refactoring.listeners.RefactoringElementListener
-
-/**
- * Returns a new [GlobalSearchScope] with exclusion rules for unit tests from [TestArtifactSearchScopes] for all modules relevant to the
- * [JUnitConfiguration].
- *
- * @see TestArtifactSearchScopes.unitTestExcludeScope
- */
-private fun fixScope(originalScope: GlobalSearchScope, jUnitConfiguration: JUnitConfiguration): GlobalSearchScope {
-  return (jUnitConfiguration as AndroidJUnitConfiguration).modulesToCompile
-    .asSequence()
-    .mapNotNull { TestArtifactSearchScopes.getInstance(it) }
-    .fold(originalScope) { scope, testArtifactSearchScopes ->
-      scope.intersectWith(GlobalSearchScope.notScope(testArtifactSearchScopes.unitTestExcludeScope))
-    }
-}
-
-/**
- * Android implementation of [TestObject] so the method [getSourceScope] can be overridden. Since [TestObject] is not
- * a final class (many others inherit from it and override its methods), this class receives an instance of another [TestObject] in
- * the constructor and uses it to call the right methods of the subclasses. Uses delegation.
- */
-class AndroidTestObject(private val myTestObject: TestObject) : TestObject(myTestObject.configuration, myTestObject.environment) {
-  override fun getModulesToCompile(): Array<Module> = myTestObject.modulesToCompile
-  override fun checkConfiguration() = myTestObject.checkConfiguration()
-  override fun execute(executor: Executor, runner: ProgramRunner<*>) = myTestObject.execute(executor, runner)
-  override fun getConfiguration() = myTestObject.configuration
-
-  /**
-   * Returns the suggested context menu action name or null.
-   * @see com.intellij.execution.configurations.LocatableConfigurationBase.getActionName
-   */
-  override fun suggestActionName(): String? = myTestObject.suggestActionName()
-
-  override fun getListener(element: PsiElement, configuration: JUnitConfiguration): RefactoringElementListener? {
-    return myTestObject.getListener(element, configuration)
-  }
-
-  override fun isConfiguredByElement(
-    configuration: JUnitConfiguration,
-    testClass: PsiClass?,
-    testMethod: PsiMethod?,
-    testPackage: PsiPackage?,
-    testDir: PsiDirectory?
-  ): Boolean {
-    return myTestObject.isConfiguredByElement(configuration, testClass, testMethod, testPackage, testDir)
-  }
-
-  override fun getSourceScope(): SourceScope? {
-    return myTestObject.sourceScope?.let { original ->
-      object : SourceScope() {
-        override fun getProject(): Project {
-          return original.project
-        }
-
-        override fun getGlobalSearchScope(): GlobalSearchScope {
-          return fixScope(original.globalSearchScope, configuration)
-        }
-
-        override fun getLibrariesScope(): GlobalSearchScope {
-          return fixScope(original.librariesScope, configuration)
-        }
-
-        override fun getModulesToCompile(): Array<Module> {
-          return original.modulesToCompile
-        }
-      }
-    }
-  }
-}
-/**
- * Android implementation of [TestsPattern] so the method [getClassFilter] can be overridden. This
- * imposes the right [com.intellij.psi.search.GlobalSearchScope] all around [TestsPattern] configurations.
- */
-class AndroidTestsPattern(
-  configuration: JUnitConfiguration,
-  environment: ExecutionEnvironment
-) : TestsPattern(configuration, environment) {
-  override fun getClassFilter(data: JUnitConfiguration.Data): TestClassFilter {
-    val originalFilter = super.getClassFilter(data)
-    return originalFilter.intersectionWith(fixScope(originalFilter.scope, configuration))
-  }
-}
-
-/**
- * Android implementation of [TestPackage] so the method [getClassFilter] can be overridden. This
- * imposes the right [com.intellij.psi.search.GlobalSearchScope] all around [TestPackage] configurations.
- */
-class AndroidTestPackage(
-  configuration: JUnitConfiguration,
-  environment: ExecutionEnvironment
-) : TestPackage(configuration, environment) {
-  @VisibleForTesting
-  public override fun getClassFilter(data: JUnitConfiguration.Data): TestClassFilter {
-    val originalFilter = super.getClassFilter(data)
-    return originalFilter.intersectionWith(fixScope(originalFilter.scope, configuration))
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/TestClassAndroidConfigurationProducer.java b/android/src/com/android/tools/idea/testartifacts/junit/TestClassAndroidConfigurationProducer.java
deleted file mode 100644
index 1e9f0b3..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/TestClassAndroidConfigurationProducer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.actions.ConfigurationContext;
-import com.intellij.execution.actions.ConfigurationFromContext;
-import com.intellij.execution.junit.AbstractTestClassConfigurationProducer;
-import com.intellij.execution.junit.JUnitConfiguration;
-import org.jetbrains.annotations.NotNull;
-
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.isFromContext;
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.shouldUseAndroidJUnitConfigurations;
-
-/**
- * Android implementation of {@link AbstractTestClassConfigurationProducer} so some behaviors can be overridden.
- */
-public class TestClassAndroidConfigurationProducer extends AbstractTestClassConfigurationProducer implements AndroidJUnitConfigurationProducer {
-  protected TestClassAndroidConfigurationProducer() {
-    super(AndroidJUnitConfigurationType.getInstance());
-  }
-
-  @Override
-  public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  public boolean shouldReplace(@NotNull ConfigurationFromContext self, @NotNull ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  public boolean isConfigurationFromContext(@NotNull JUnitConfiguration unitConfiguration, @NotNull ConfigurationContext context) {
-    return isFromContext(unitConfiguration, context, getConfigurationFactory());
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/TestDirectoryAndroidConfigurationProducer.java b/android/src/com/android/tools/idea/testartifacts/junit/TestDirectoryAndroidConfigurationProducer.java
deleted file mode 100644
index d7d36d1..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/TestDirectoryAndroidConfigurationProducer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.actions.ConfigurationFromContext;
-import com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer;
-import org.jetbrains.annotations.NotNull;
-
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.shouldUseAndroidJUnitConfigurations;
-
-/**
- * Android implementation of {@link AbstractAllInDirectoryConfigurationProducer} so some behaviors can be overridden.
- */
-public class TestDirectoryAndroidConfigurationProducer extends AbstractAllInDirectoryConfigurationProducer implements AndroidJUnitConfigurationProducer {
-  protected TestDirectoryAndroidConfigurationProducer() {
-    super(AndroidJUnitConfigurationType.getInstance());
-  }
-
-  @Override
-  public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  public boolean shouldReplace(@NotNull ConfigurationFromContext self, @NotNull ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/TestMethodAndroidConfigurationProducer.java b/android/src/com/android/tools/idea/testartifacts/junit/TestMethodAndroidConfigurationProducer.java
deleted file mode 100644
index 4151b2c..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/TestMethodAndroidConfigurationProducer.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.AndroidPsiUtils;
-import com.intellij.execution.JavaRunConfigurationExtensionManager;
-import com.intellij.execution.Location;
-import com.intellij.execution.actions.ConfigurationContext;
-import com.intellij.execution.actions.ConfigurationFromContext;
-import com.intellij.execution.actions.RunConfigurationProducer;
-import com.intellij.execution.junit.JUnitConfiguration;
-import com.intellij.execution.junit.JUnitConfigurationProducer;
-import com.intellij.execution.junit.JUnitUtil;
-import com.intellij.execution.junit.PatternConfigurationProducer;
-import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
-import com.intellij.execution.junit2.info.MethodLocation;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.util.Ref;
-import com.intellij.psi.PsiClass;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiMethod;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.isFromContext;
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.shouldUseAndroidJUnitConfigurations;
-
-/**
- * Android implementation of {@link AbstractTestMethodConfigurationProducer} so some behaviors can be overridden.
- */
-public class TestMethodAndroidConfigurationProducer extends JUnitConfigurationProducer implements AndroidJUnitConfigurationProducer {
-  protected TestMethodAndroidConfigurationProducer() {
-    super(AndroidJUnitConfigurationType.getInstance());
-  }
-
-  @Override
-  public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  public boolean shouldReplace(@NotNull ConfigurationFromContext self, @NotNull ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  protected boolean setupConfigurationFromContext(
-    @NotNull JUnitConfiguration configuration,
-    @NotNull ConfigurationContext context,
-    @NotNull Ref<PsiElement> sourceElement) {
-
-    if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
-      return false;
-    }
-    final Location contextLocation = context.getLocation();
-    assert contextLocation != null;
-    PsiMethod method = getTestMethod(contextLocation);
-    if (method == null || method.getContainingClass() == null) {
-      return false;
-    }
-    Location<PsiMethod> methodLocation = MethodLocation.elementInClass(method, method.getContainingClass());
-    if (methodLocation == null) return false;
-
-    if (contextLocation instanceof PsiMemberParameterizedLocation) {
-      final String paramSetName = ((PsiMemberParameterizedLocation)contextLocation).getParamSetName();
-      if (paramSetName != null) {
-        configuration.setProgramParameters(paramSetName);
-      }
-      PsiClass containingClass = ((PsiMemberParameterizedLocation)contextLocation).getContainingClass();
-      if (containingClass != null) {
-        methodLocation = MethodLocation.elementInClass(methodLocation.getPsiElement(), containingClass);
-      }
-    }
-    sourceElement.set(methodLocation.getPsiElement());
-    setupConfigurationModule(context, configuration);
-    final Module originalModule = configuration.getConfigurationModule().getModule();
-    configuration.beMethodConfiguration(methodLocation);
-    configuration.restoreOriginalModule(originalModule);
-    JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, contextLocation);
-    configuration.setForkMode(JUnitConfiguration.FORK_NONE);
-    return true;
-  }
-
-  private static PsiMethod getTestMethod(final Location<?> location) {
-    PsiMethod elementMethod = AndroidPsiUtils.getPsiParentOfType(location.getPsiElement(), PsiMethod.class, false);
-    return isTestMethod(elementMethod) ? elementMethod : null;
-  }
-
-  private static boolean isTestMethod(@Nullable PsiMethod method) {
-    if (method == null) {
-      return false;
-    }
-
-    PsiClass testClass = method.getContainingClass();
-    if (testClass != null && JUnitUtil.isTestClass(testClass)) {
-      return new JUnitUtil.TestMethodFilter(testClass).value(method);
-    }
-    return false;
-  }
-
-  @Override
-  public boolean isConfigurationFromContext(@NotNull JUnitConfiguration unitConfiguration, @NotNull ConfigurationContext context) {
-    return isFromContext(unitConfiguration, context, getConfigurationFactory());
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/TestPackageAndroidConfigurationProducer.java b/android/src/com/android/tools/idea/testartifacts/junit/TestPackageAndroidConfigurationProducer.java
deleted file mode 100644
index 711cf68..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/TestPackageAndroidConfigurationProducer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.actions.ConfigurationFromContext;
-import com.intellij.execution.junit.AbstractAllInPackageConfigurationProducer;
-import org.jetbrains.annotations.NotNull;
-
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.shouldUseAndroidJUnitConfigurations;
-
-/**
- * Android implementation of {@link AbstractAllInPackageConfigurationProducer} so some behaviors can be overridden.
- */
-public class TestPackageAndroidConfigurationProducer extends AbstractAllInPackageConfigurationProducer implements AndroidJUnitConfigurationProducer {
-  protected TestPackageAndroidConfigurationProducer() {
-    super(AndroidJUnitConfigurationType.getInstance());
-  }
-
-  @Override
-  public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  public boolean shouldReplace(@NotNull ConfigurationFromContext self, @NotNull ConfigurationFromContext other) {
-    return super.isPreferredConfiguration(self, other)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/junit/TestPatternConfigurationProducer.java b/android/src/com/android/tools/idea/testartifacts/junit/TestPatternConfigurationProducer.java
deleted file mode 100644
index ae7f1c7..0000000
--- a/android/src/com/android/tools/idea/testartifacts/junit/TestPatternConfigurationProducer.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.Location;
-import com.intellij.execution.actions.ConfigurationContext;
-import com.intellij.execution.actions.ConfigurationFromContext;
-import com.intellij.execution.junit.*;
-import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
-import com.intellij.execution.testframework.AbstractPatternBasedConfigurationProducer;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.util.Ref;
-import com.intellij.psi.PsiClass;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiMethod;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurations.shouldUseAndroidJUnitConfigurations;
-
-/**
- * Android implementation of {@link AbstractPatternBasedConfigurationProducer} so some behaviors can be overridden.
- */
-public class TestPatternConfigurationProducer extends AbstractPatternBasedConfigurationProducer<AndroidJUnitConfiguration> implements AndroidJUnitConfigurationProducer {
-  public TestPatternConfigurationProducer() {
-    super(AndroidJUnitConfigurationType.getInstance());
-  }
-
-  @Override
-  protected boolean isTestClass(PsiClass psiClass) {
-    return JUnitUtil.isTestClass(psiClass);
-  }
-
-  @Override
-  protected boolean isTestMethod(boolean checkAbstract, PsiMethod psiElement) {
-    return JUnitUtil.getTestMethod(psiElement, checkAbstract) != null;
-  }
-
-  @Override
-  protected boolean setupConfigurationFromContext(
-    @NotNull AndroidJUnitConfiguration configuration,
-    @NotNull ConfigurationContext context,
-    @NotNull Ref<PsiElement> sourceElement) {
-
-    LinkedHashSet<String> classes = new LinkedHashSet<String>();
-    PsiElement element = checkPatterns(context, classes);
-    if (element == null) {
-      return false;
-    }
-    sourceElement.set(element);
-    JUnitConfiguration.Data data = configuration.getPersistentData();
-    data.setPatterns(classes);
-    data.TEST_OBJECT = JUnitConfiguration.TEST_PATTERN;
-    data.setScope(setupPackageConfiguration(context, configuration, data.getScope()));
-    configuration.setGeneratedName();
-    Location contextLocation = context.getLocation();
-    if (contextLocation instanceof PsiMemberParameterizedLocation) {
-      String paramSetName = ((PsiMemberParameterizedLocation)contextLocation).getParamSetName();
-      if (paramSetName != null) {
-        configuration.setProgramParameters(paramSetName);
-      }
-    }
-    return true;
-  }
-
-  @Override
-  protected Module findModule(AndroidJUnitConfiguration configuration, Module contextModule) {
-    Set<String> patterns = configuration.getPersistentData().getPatterns();
-    return findModule(configuration, contextModule, patterns);
-  }
-
-  @Override
-  public boolean isConfigurationFromContext(@NotNull AndroidJUnitConfiguration unitConfiguration, @NotNull ConfigurationContext context) {
-    if (JUnitConfiguration.TEST_PATTERN.equals(unitConfiguration.getPersistentData().TEST_OBJECT)) {
-      Set<String> patterns = unitConfiguration.getPersistentData().getPatterns();
-      if (isConfiguredFromContext(context, patterns)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  @Override
-  public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
-    return !other.isProducedBy(TestMethodConfigurationProducer.class)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-
-  @Override
-  public boolean shouldReplace(@NotNull ConfigurationFromContext self, @NotNull ConfigurationFromContext other) {
-    return !other.isProducedBy(TestMethodConfigurationProducer.class)
-           && shouldUseAndroidJUnitConfigurations(self, other);
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcher.java b/android/src/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcher.java
deleted file mode 100644
index 32a9dde..0000000
--- a/android/src/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcher.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.scopes;
-
-import static com.android.SdkConstants.DOT_JAR;
-import static com.android.sdklib.IAndroidTarget.ANDROID_JAR;
-import static com.android.tools.idea.io.FilePaths.toSystemDependentPath;
-import static com.intellij.openapi.util.io.FileUtil.pathsEqual;
-
-import com.android.ide.common.gradle.model.IdeAndroidArtifact;
-import com.android.ide.common.gradle.model.IdeJavaArtifact;
-import com.android.tools.idea.gradle.project.GradleProjectInfo;
-import com.android.tools.idea.gradle.project.model.AndroidModuleModel;
-import com.android.tools.idea.gradle.project.model.JavaModuleModel;
-import com.android.tools.idea.projectsystem.TestArtifactSearchScopes;
-import com.intellij.execution.JUnitPatcher;
-import com.intellij.execution.configurations.JavaParameters;
-import com.intellij.openapi.compiler.CompileScope;
-import com.intellij.openapi.compiler.CompilerManager;
-import com.intellij.openapi.module.Module;
-import com.intellij.util.PathsList;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import org.jetbrains.android.sdk.AndroidPlatform;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.jetbrains.plugins.gradle.model.ExtIdeaCompilerOutput;
-
-/**
- * Implementation of {@link JUnitPatcher} that removes android.jar from the class path. It's only applicable to
- * JUnit run configurations if the selected test artifact is "unit tests". In this case, the mockable android.jar is already in the
- * dependencies (taken from the model).
- */
-public class AndroidJunitPatcher extends JUnitPatcher {
-  @Override
-  public void patchJavaParameters(@Nullable Module module, @NotNull JavaParameters javaParameters) {
-    // Only patch if the project is a Gradle project.
-    if (module == null || !GradleProjectInfo.getInstance(module.getProject()).isBuildWithGradle()) {
-      return;
-    }
-
-    AndroidModuleModel androidModel = AndroidModuleModel.get(module);
-    if (androidModel == null) {
-      // Add resource folders if Java module and for module dependencies
-      addFoldersToClasspath(module, null, javaParameters.getClassPath());
-      return;
-    }
-
-    // Modify the class path only if we're dealing with the unit test artifact.
-    IdeJavaArtifact testArtifact = androidModel.getSelectedVariant().getUnitTestArtifact();
-    if (testArtifact == null) {
-      return;
-    }
-
-    PathsList classPath = javaParameters.getClassPath();
-
-    TestArtifactSearchScopes testScopes = TestArtifactSearchScopes.getInstance(module);
-    if (testScopes == null) {
-      return;
-    }
-
-    // There is potential performance if we just call remove for all excluded items because every random remove operation has linear
-    // complexity. TODO change the {@code PathList} API.
-    for (String path : classPath.getPathList()) {
-      if (!testScopes.includeInUnitTestClasspath(new File(path))) {
-        classPath.remove(path);
-      }
-    }
-
-    AndroidPlatform platform = AndroidPlatform.getInstance(module);
-    if (platform == null) {
-      return;
-    }
-
-    String originalClassPath = classPath.getPathsString();
-    try {
-      addRuntimeJarsToClasspath(testArtifact, classPath);
-      replaceAndroidJarWithMockableJar(classPath, platform, testArtifact);
-      addFoldersToClasspath(module, testArtifact, classPath);
-    }
-    catch (RuntimeException e) {
-      throw new RuntimeException(String.format("Error patching the JUnit class path. Original class path:%n%s", originalClassPath), e);
-    }
-  }
-
-  /**
-   * Removes real android.jar from the classpath and puts the mockable one at the end.
-   */
-  private static void replaceAndroidJarWithMockableJar(@NotNull PathsList classPath,
-                                                       @NotNull AndroidPlatform platform,
-                                                       @NotNull IdeJavaArtifact artifact) {
-    String androidJarPath = platform.getTarget().getPath(ANDROID_JAR);
-    for (String entry : classPath.getPathList()) {
-      if (pathsEqual(androidJarPath, entry)) {
-        classPath.remove(entry);
-      }
-    }
-
-    // Move the mockable android jar to the end. This is to make sure "empty" classes from android.jar don't end up shadowing real
-    // classes needed by the testing code (e.g. XML/JSON related). Since mockable jars were introduced in 1.1, they were put in the model
-    // as dependencies, which means a module which depends on Android libraries with different  will end up with more than one mockable jar
-    // in the classpath.
-    List<String> mockableJars = new ArrayList<>();
-    for (String path : classPath.getPathList()) {
-      if (toSystemDependentPath(path).getName().startsWith("mockable-")) {
-        // PathsList stores strings - use the one that's actually stored there.
-        mockableJars.add(path);
-      }
-    }
-
-    // Remove all mockable android.jars.
-    for (String mockableJar : mockableJars) {
-      classPath.remove(mockableJar);
-    }
-
-    File mockableJar = artifact.getMockablePlatformJar();
-
-    if (mockableJar != null) {
-      classPath.addTail(mockableJar.getPath());
-    }
-    else {
-      // We're dealing with an old plugin, that puts the mockable jar in the dependencies. Just put the matching android.jar at the end of
-      // the classpath.
-      for (String mockableJarPath : mockableJars) {
-        if (mockableJarPath.endsWith("-" + platform.getApiLevel() + DOT_JAR)) {
-          classPath.addTail(mockableJarPath);
-          return;
-        }
-      }
-    }
-  }
-
-  /**
-   * Puts additional necessary folders for the selected variant of every module on the classpath.
-   *
-   * <p>The problem we're solving here is that CompilerModuleExtension supports only one directory for "compiler output". When IJ compiles
-   * Java projects, it copies resources and Kotlin classes to the output classes dir. This is something Gradle doesn't do, so we need to add
-   * these directories to the classpath here.
-   *
-   * <p>We need to do this for every project dependency as well, since we're using classes and resources directories of these directly.
-   *
-   * @see <a href="http://b.android.com/172409">Bug 172409</a>
-   */
-  private static void addFoldersToClasspath(@NotNull Module module,
-                                            @Nullable IdeJavaArtifact testArtifact,
-                                            @NotNull PathsList classPath) {
-    CompilerManager compilerManager = CompilerManager.getInstance(module.getProject());
-    CompileScope scope = compilerManager.createModulesCompileScope(new Module[]{module}, true, true);
-
-    if (testArtifact != null) {
-      classPath.addAllFiles(ExcludedRoots.getAdditionalClasspathFolders(testArtifact));
-    }
-
-    TestArtifactSearchScopes testScopes = TestArtifactSearchScopes.getInstance(module);
-
-    for (Module affectedModule : scope.getAffectedModules()) {
-      AndroidModuleModel affectedAndroidModel = AndroidModuleModel.get(affectedModule);
-      if (affectedAndroidModel != null) {
-        IdeAndroidArtifact mainArtifact = affectedAndroidModel.getMainArtifact();
-        for (File folder : ExcludedRoots.getAdditionalClasspathFolders(mainArtifact)) {
-          addToClasspath(folder, classPath, testScopes);
-        }
-      }
-
-      // Adds resources from java modules to the classpath (see b/37137712)
-      JavaModuleModel javaModel = JavaModuleModel.get(affectedModule);
-      if (javaModel != null) {
-        ExtIdeaCompilerOutput output = javaModel.getCompilerOutput();
-        File javaTestResources = output == null ? null : output.getTestResourcesDir();
-        if (javaTestResources != null) {
-          addToClasspath(javaTestResources, classPath, testScopes);
-        }
-        File javaMainResources = output == null ? null : output.getMainResourcesDir();
-        if (javaMainResources != null) {
-          addToClasspath(javaMainResources, classPath, testScopes);
-        }
-
-        if (javaModel.getBuildFolderPath() != null) {
-          File kotlinClasses = javaModel.getBuildFolderPath().toPath().resolve("classes").resolve("kotlin").toFile();
-
-          if (kotlinClasses.exists()) {
-            // It looks like standard Gradle-4.0-style output directories are used. We add Kotlin equivalents speculatively, since we don't
-            // yet have a way of passing the data all the way from Gradle to here.
-            addToClasspath(new File(kotlinClasses, "main"), classPath, testScopes);
-            addToClasspath(new File(kotlinClasses, "test"), classPath, testScopes);
-          }
-        }
-      }
-    }
-  }
-
-  private static void addToClasspath(@NotNull File folder, @NotNull PathsList classPath, @Nullable TestArtifactSearchScopes scopes) {
-    if (scopes == null || scopes.includeInUnitTestClasspath(folder)) {
-      classPath.add(folder);
-    }
-  }
-
-  /**
-   * Put runtime jars to classpath.
-   * The runtime classpath is artifact-specific, there is no need to apply exclude scope.
-   */
-  private static void addRuntimeJarsToClasspath(@NotNull IdeJavaArtifact testArtifact,
-                                                @NotNull PathsList classPath) {
-    for (File runtimeClasspath : testArtifact.getLevel2Dependencies().getRuntimeOnlyClasses()) {
-      classPath.add(runtimeClasspath);
-    }
-  }
-}
diff --git a/android/src/com/android/tools/idea/testartifacts/scopes/ExcludedRoots.java b/android/src/com/android/tools/idea/testartifacts/scopes/ExcludedRoots.java
index b617944..0db2665 100644
--- a/android/src/com/android/tools/idea/testartifacts/scopes/ExcludedRoots.java
+++ b/android/src/com/android/tools/idea/testartifacts/scopes/ExcludedRoots.java
@@ -158,9 +158,6 @@
 
   /**
    * Returns folders which are used for unit testing and stored in the model, but not represented in the IntelliJ project structure.
-   *
-   * <p>These folders are added to the classpath by {@link AndroidJunitPatcher} and potentially filtered out by this class via
-   * {@link GradleTestArtifactSearchScopes}.
    */
   public static List<File> getAdditionalClasspathFolders(@NotNull IdeBaseArtifact artifact) {
     return ImmutableList.<File>builder()
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/AndroidTestAndJUnitConfigurationConflictsTest.java b/android/testSrc/com/android/tools/idea/testartifacts/AndroidTestAndJUnitConfigurationConflictsTest.java
deleted file mode 100644
index 886327f..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/AndroidTestAndJUnitConfigurationConflictsTest.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts;
-
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.createAndroidTestConfigurationFromDirectory;
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.createJUnitConfigurationFromDirectory;
-import static com.android.tools.idea.testing.TestProjectPaths.TEST_ARTIFACTS_SAME_NAME_CLASSES;
-import static com.google.common.truth.Truth.assertThat;
-
-import com.android.tools.idea.testartifacts.instrumented.AndroidTestConsoleProperties;
-import com.android.tools.idea.testartifacts.instrumented.AndroidTestRunConfiguration;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationType;
-import com.android.tools.idea.testartifacts.junit.AndroidTestPackage;
-import com.android.tools.idea.projectsystem.TestArtifactSearchScopes;
-import com.android.tools.idea.testing.AndroidGradleTestCase;
-import com.android.tools.idea.testing.TestProjectPaths;
-import com.intellij.execution.ConfigurationUtil;
-import com.intellij.execution.Executor;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.executors.DefaultRunExecutor;
-import com.intellij.execution.junit.JUnitConfiguration;
-import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
-import com.intellij.execution.testframework.TestSearchScope;
-import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.util.SystemInfo;
-import com.intellij.psi.JavaPsiFacade;
-import com.intellij.psi.PsiClass;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * Tests for eventual conflicts between {@link AndroidTestRunConfiguration} and {@link AndroidJUnitConfiguration}
- */
-//TODO(karimai): Migrate this test when both Instrumented tests and unit tests use GRADLE.
-public class AndroidTestAndJUnitConfigurationConflictsTest extends AndroidGradleTestCase {
-  // See http://b.android.com/215255
-  public void testConfigurationsAreDifferent() throws Exception {
-    loadSimpleApplication();
-    if (SystemInfo.isWindows) {
-      // Do not run tests on Windows (see http://b.android.com/222904)
-      return;
-    }
-
-    RunConfiguration androidTestRunConfiguration = createAndroidTestConfigurationFromDirectory(getProject(), "app/src/androidTest/java");
-    RunConfiguration jUnitConfiguration = createJUnitConfigurationFromDirectory(getProject(), "app/src/test/java");
-
-    assertNotNull(jUnitConfiguration);
-    assertNotNull(androidTestRunConfiguration);
-
-    assertNotSame(androidTestRunConfiguration, jUnitConfiguration);
-  }
-
-  public void testDoubleClickRedirection() throws Exception {
-    String commonTestClassName = "google.testartifacts.ExampleTest";
-    loadProject(TEST_ARTIFACTS_SAME_NAME_CLASSES);
-
-    Executor executor = DefaultRunExecutor.getRunExecutorInstance();
-
-    AndroidJUnitConfiguration jUnitConfiguration = createJUnitConfigurationFromDirectory(getProject(), "app/src/test/java");
-    RunConfiguration androidTestRunConfiguration = createAndroidTestConfigurationFromDirectory(getProject(), "app/src/androidTest/java");
-
-    assertNotNull(jUnitConfiguration);
-    assertNotNull(androidTestRunConfiguration);
-
-    SMTRunnerConsoleProperties jUnitProperties = jUnitConfiguration.createTestConsoleProperties(executor);
-    SMTRunnerConsoleProperties androidTestProperties = new AndroidTestConsoleProperties(androidTestRunConfiguration, executor);
-
-    PsiClass[] jUnitClasses = JavaPsiFacade.getInstance(getProject()).findClasses(commonTestClassName, jUnitProperties.getScope());
-    PsiClass[] aTestClasses = JavaPsiFacade.getInstance(getProject()).findClasses(commonTestClassName, androidTestProperties.getScope());
-
-    assertSize(1, jUnitClasses);
-    assertSize(1, aTestClasses);
-    assertNotSame(jUnitClasses[0], aTestClasses[0]);
-  }
-
-  public void testCorrectJUnitConfigurationAllInPackageModule() throws Exception {
-    loadSimpleApplication();
-    checkClassesInAllInPackage(TestSearchScope.SINGLE_MODULE, "google.simpleapplication");
-  }
-
-  public void testCorrectJUnitConfigurationAllInPackageProject() throws Exception {
-    loadSimpleApplication();
-    checkClassesInAllInPackage(TestSearchScope.WHOLE_PROJECT, "google.simpleapplication");
-  }
-
-  public void testAllInProject() throws Exception {
-    loadProject(TestProjectPaths.UNIT_TESTING);
-    Set<PsiClass> testClasses = getClassesToTest(TestSearchScope.WHOLE_PROJECT, "", getModule("app"));
-    assertThat(testClasses.stream().map(PsiClass::getQualifiedName).collect(Collectors.toSet())).containsExactly(
-      "com.example.app.AppJavaUnitTest",
-      "com.example.app.AppKotlinUnitTest",
-      "com.example.javalib.JavaLibJavaTest",
-      "com.example.javalib.JavaLibKotlinTest",
-      "com.example.util_lib.UtilLibJavaTest",
-      "com.example.util_lib.UtilLibKotlinTest"
-    );
-
-  }
-
-  public void testAcrossModuleBoundaries() throws Exception {
-    loadProject(TestProjectPaths.UNIT_TESTING);
-    Set<PsiClass> testClasses = getClassesToTest(TestSearchScope.MODULE_WITH_DEPENDENCIES, "", getModule("app"));
-    assertThat(testClasses.stream().map(PsiClass::getQualifiedName).collect(Collectors.toSet())).containsExactly(
-      "com.example.app.AppJavaUnitTest",
-      "com.example.app.AppKotlinUnitTest",
-      "com.example.javalib.JavaLibJavaTest",
-      "com.example.javalib.JavaLibKotlinTest",
-      "com.example.util_lib.UtilLibJavaTest",
-      "com.example.util_lib.UtilLibKotlinTest"
-    );
-  }
-
-  private void checkClassesInAllInPackage(@NotNull TestSearchScope type,
-                                          @SuppressWarnings("SameParameterValue") @NotNull String packageName) {
-    Module module = getModule("app");
-    Set<PsiClass> myClasses = getClassesToTest(type, packageName, module);
-
-    assertSize(1, myClasses);
-    TestArtifactSearchScopes scopes = TestArtifactSearchScopes.getInstance(module);
-    assertNotNull(scopes);
-    assertTrue(scopes.isUnitTestSource(myClasses.iterator().next().getContainingFile().getVirtualFile()));
-  }
-
-  @NotNull
-  private Set<PsiClass> getClassesToTest(@NotNull TestSearchScope type, @NotNull String packageName, @NotNull Module module) {
-    assertNotNull(module);
-
-    AndroidJUnitConfiguration configuration = createAllInPackageRunConfiguration(module, packageName, type);
-    AndroidTestPackage testPackage =
-      new AndroidTestPackage(configuration,
-                             ExecutionEnvironmentBuilder.create(DefaultRunExecutor.getRunExecutorInstance(), configuration).build());
-    Set<PsiClass> myClasses = new HashSet<>();
-    ConfigurationUtil.findAllTestClasses(testPackage.getClassFilter(configuration.getPersistentData()), module, myClasses);
-    return myClasses;
-  }
-
-  @NotNull
-  private AndroidJUnitConfiguration createAllInPackageRunConfiguration(Module module, String packageName, TestSearchScope type) {
-    AndroidJUnitConfiguration configuration =
-      new AndroidJUnitConfiguration(getProject(), AndroidJUnitConfigurationType.getInstance().getConfigurationFactories()[0]);
-    configuration.getPersistentData().TEST_OBJECT = JUnitConfiguration.TEST_PACKAGE;
-    configuration.getPersistentData().PACKAGE_NAME = packageName;
-    configuration.getPersistentData().setScope(type);
-    configuration.setModule(module);
-    return configuration;
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleConfigurationProducersTest.kt b/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleConfigurationProducersTest.kt
index c5e792a..a935a7c 100644
--- a/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleConfigurationProducersTest.kt
+++ b/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleConfigurationProducersTest.kt
@@ -28,16 +28,6 @@
  * Tests for producing Gradle Run Configuration for Android unit test.
  */
 class AndroidGradleConfigurationProducersTest : AndroidGradleTestCase() {
-  override fun setUp() {
-    super.setUp()
-    StudioFlags.GRADLE_UNIT_TESTING.override(true)
-  }
-
-  @Throws(Exception::class)
-  override fun tearDown() {
-    super.tearDown()
-    StudioFlags.GRADLE_UNIT_TESTING.clearOverride()
-  }
 
   @Throws(Exception::class)
   fun testCanCreateGradleConfigurationFromTestClass() {
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleTestTasksProviderTest.kt b/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleTestTasksProviderTest.kt
index eba52fc..82e0e67 100644
--- a/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleTestTasksProviderTest.kt
+++ b/android/testSrc/com/android/tools/idea/testartifacts/gradle/AndroidGradleTestTasksProviderTest.kt
@@ -30,16 +30,6 @@
  * Tests for {@link AndroidGradleTestTasksProvider} to verify that GRADLE can create the right run configurations when having same name.
  */
 class AndroidGradleTestTasksProviderTest: AndroidGradleTestCase() {
-  override fun setUp() {
-    super.setUp()
-    StudioFlags.GRADLE_UNIT_TESTING.override(true)
-  }
-
-  @Throws(Exception::class)
-  override fun tearDown() {
-    super.tearDown()
-    StudioFlags.GRADLE_UNIT_TESTING.clearOverride()
-  }
 
   @Throws(Exception::class)
   fun testCanCreateGradleConfigurationFromTestClass() {
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitClasspathTest.java b/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitClasspathTest.java
deleted file mode 100644
index f50c3f6..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitClasspathTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.android.tools.idea.gradle.project.build.invoker.GradleInvocationResult;
-import com.android.tools.idea.gradle.project.build.invoker.TestCompileType;
-import com.android.tools.idea.testing.AndroidGradleTestCase;
-import com.android.tools.idea.testing.TestModuleUtil;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModuleManager;
-import com.intellij.openapi.roots.CompilerModuleExtension;
-
-public class AndroidJUnitClasspathTest extends AndroidGradleTestCase {
-
-  // See bug http://b.android.com/233410
-  public void testRightPaths() throws Exception {
-    loadSimpleApplication();
-    Module module = TestModuleUtil.findModule(getProject(), "app");
-    Module[] modulesToCompile = {module};
-
-    GradleInvocationResult invocationResult =
-      invokeGradle(getProject(), invoker -> invoker.compileJava(modulesToCompile, TestCompileType.UNIT_TESTS));
-
-    assertTrue(invocationResult.isBuildSuccessful());
-
-    CompilerModuleExtension originalCompilerModuleExtension = CompilerModuleExtension.getInstance(module);
-    assertNotNull(originalCompilerModuleExtension);
-    assertFalse(originalCompilerModuleExtension.isCompilerOutputPathInherited());
-
-    String compilerOutputUrlForTests = originalCompilerModuleExtension.getCompilerOutputUrlForTests();
-    assertNotNull(compilerOutputUrlForTests);
-    assertTrue(compilerOutputUrlForTests.contains("app/build/intermediates/javac/debugUnitTest/classes"));
-
-    String compilerOutputUrl = originalCompilerModuleExtension.getCompilerOutputUrl();
-    assertNotNull(compilerOutputUrl);
-    assertTrue(compilerOutputUrl.contains("app/build/intermediates/javac/debug/classes"));
-
-    assertSize(2, originalCompilerModuleExtension.getOutputRootUrls(true));
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverterTest.java b/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverterTest.java
deleted file mode 100644
index 9e24874..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationConverterTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.conversion.ConversionProcessor;
-import com.intellij.conversion.RunManagerSettings;
-import com.intellij.testFramework.PlatformTestCase;
-import org.jdom.Element;
-import org.jdom.input.SAXBuilder;
-import org.jetbrains.annotations.NotNull;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-
-import static com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationConverter.*;
-import static com.android.tools.idea.testing.TestProjectPaths.TEST_ARTIFACTS_OLD_TESTS;
-import static org.jetbrains.android.AndroidTestBase.getTestDataPath;
-
-/**
- * Tests for {@link AndroidJUnitConfigurationConverter}.
- */
-public class AndroidJUnitConfigurationConverterTest extends PlatformTestCase {
-
-  public void testConfigurationsAreConvertedInStudio() throws Exception {
-
-    ConversionProcessor<RunManagerSettings> converter = new AndroidJUnitConfigurationConverter().createRunConfigurationsConverter();
-    RunManagerSettings runManagerSettings = getStubRunManagerSettings();
-    Collection<? extends Element> runConfigurations = runManagerSettings.getRunConfigurations();
-
-    assertTrue(converter.isConversionNeeded(runManagerSettings));
-    assertSize(2, getJUnitConfigurations(runConfigurations));
-    assertEmpty(getAndroidJUnitConfigurations(runConfigurations));
-
-    converter.process(runManagerSettings);
-    assertEmpty(getJUnitConfigurations(runConfigurations));
-    assertSize(2, getAndroidJUnitConfigurations(runConfigurations));
-  }
-
-  @NotNull
-  private static RunManagerSettings getStubRunManagerSettings() {
-    return new RunManagerSettings() {
-      Collection<Element> myElements = null;
-      @NotNull
-      @Override
-      public Collection<? extends Element> getRunConfigurations() {
-        if (myElements == null) {
-          Element root = null;
-          try {
-            root = readElement(getTestDataPath() + "/" + TEST_ARTIFACTS_OLD_TESTS + "/.idea/workspace.xml");
-          }
-          catch (Exception e) {
-            e.printStackTrace();
-          }
-          myElements = root != null ? root.getChild("component").getChildren("configuration") : Collections.emptySet();
-        }
-        return myElements;
-      }
-    };
-  }
-
-  private static Element readElement(String path) throws Exception {
-    return new SAXBuilder().build(new File(path)).getRootElement();
-  }
-
-  @NotNull
-  private static Collection<Element> getJUnitConfigurations(@NotNull Collection<? extends Element> configurations) {
-    return getConfigurationsOfType(configurations, JUNIT_CONFIGURATION_TYPE, JUNIT_CONFIGURATION_FACTORY_NAME);
-  }
-
-  @NotNull
-  private static Collection<Element> getAndroidJUnitConfigurations(@NotNull Collection<? extends Element> configurations) {
-    return getConfigurationsOfType(configurations, ANDROID_JUNIT_CONFIGURATION_TYPE, ANDROID_JUNIT_CONFIGURATION_FACTORY_NAME);
-  }
-
-  @NotNull
-  private static Collection<Element> getConfigurationsOfType(@NotNull Collection<? extends Element> configurations,
-                                                             @NotNull String configurationType,
-                                                             @NotNull String configurationFactoryName) {
-    Collection<Element> aimConfigurations = new LinkedList<>();
-    for (Element element : configurations) {
-      String typeName = element.getAttributeValue(CONFIGURATION_TYPE_ATTRIBUTE);
-      String factoryName = element.getAttributeValue(FACTORY_NAME_ATTRIBUTE);
-      Boolean isTemplate = Boolean.valueOf(element.getAttributeValue(TEMPLATE_FLAG_ATTRIBUTE)).booleanValue();
-      if (!isTemplate && typeName.equals(configurationType) && factoryName.equals(configurationFactoryName)) {
-        aimConfigurations.add(element);
-      }
-    }
-    return aimConfigurations;
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationProducersTest.java b/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationProducersTest.java
deleted file mode 100644
index 94d370a..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationProducersTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.createContext;
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.createJUnitConfigurationFromClass;
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.createJUnitConfigurationFromDirectory;
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.createJUnitConfigurationFromFile;
-import static com.android.tools.idea.testartifacts.TestConfigurationTesting.getPsiElement;
-import static com.android.tools.idea.testing.TestProjectPaths.TEST_ARTIFACTS_KOTLIN;
-
-import com.android.tools.idea.gradle.run.MakeBeforeRunTaskProvider;
-import com.android.tools.idea.testing.AndroidGradleTestCase;
-import com.intellij.compiler.options.CompileStepBeforeRun;
-import com.intellij.execution.BeforeRunTask;
-import com.intellij.execution.BeforeRunTaskProvider;
-import com.intellij.execution.RunnerAndConfigurationSettings;
-import com.intellij.execution.actions.ConfigurationContext;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.impl.RunManagerImpl;
-import com.intellij.openapi.util.SystemInfo;
-import java.util.List;
-import org.gradle.internal.impldep.com.google.common.collect.Lists;
-
-
-/**
- * Tests for all the {@link AndroidJUnitConfigurationProducer}s
- */
-// TODO(karimai): delete this test when the test Runner is only Gradle.
-public class AndroidJUnitConfigurationProducersTest extends AndroidGradleTestCase {
-
-  @Override
-  protected boolean shouldRunTest() {
-    // Do not run tests on Windows (see http://b.android.com/222904)
-    return !SystemInfo.isWindows && super.shouldRunTest();
-  }
-
-  @Override
-  public void setUp() throws Exception {
-    super.setUp();
-  }
-
-  public void testCanCreateJUnitConfigurationFromJUnitTestClass() throws Exception {
-    loadSimpleApplication();
-    assertNotNull(createJUnitConfigurationFromClass(getProject(), "google.simpleapplication.UnitTest"));
-  }
-
-  public void testCannotCreateJUnitConfigurationFromAndroidTestClass() throws Exception {
-    loadSimpleApplication();
-    assertNull(createJUnitConfigurationFromClass(getProject(), "google.simpleapplication.ApplicationTest"));
-  }
-
-  public void testCanCreateJUnitConfigurationFromJUnitTestDirectory() throws Exception {
-    loadSimpleApplication();
-    assertNotNull(createJUnitConfigurationFromDirectory(getProject(), "app/src/test/java"));
-  }
-
-  public void testCannotCreateJUnitConfigurationFromAndroidTestDirectory() throws Exception {
-    loadSimpleApplication();
-    assertNull(createJUnitConfigurationFromDirectory(getProject(), "app/src/androidTest/java"));
-  }
-
-  public void testCannotCreateJUnitConfigurationFromAndroidTestClassKotlin() throws Exception {
-    loadProject(TEST_ARTIFACTS_KOTLIN);
-    assertNull(createJUnitConfigurationFromFile(
-      getProject(), "app/src/androidTest/java/com/example/android/kotlin/ExampleInstrumentedTest.kt"));
-  }
-
-  public void testCanCreateJUnitConfigurationFromJUnitTestDirectoryKotlin() throws Exception {
-    loadProject(TEST_ARTIFACTS_KOTLIN);
-    assertNotNull(createJUnitConfigurationFromDirectory(getProject(), "app/src/test/java"));
-  }
-
-  public void testCannotCreateJUnitConfigurationFromAndroidTestDirectoryKotlin() throws Exception {
-    loadProject(TEST_ARTIFACTS_KOTLIN);
-    assertNull(createJUnitConfigurationFromDirectory(getProject(), "app/src/androidTest/java"));
-  }
-
-  public void testCreatedJUnitConfigurationHasGradleBeforeRunTask() throws Exception {
-    loadSimpleApplication();
-
-    // Create and add RunConfiguration to the RunManager
-    RunManagerImpl runManager = RunManagerImpl.getInstanceImpl(getProject());
-    RunnerAndConfigurationSettings settings = runManager.createConfiguration(
-      createJUnitConfigurationFromClass(getProject(), "google.simpleapplication.UnitTest"),
-      AndroidJUnitConfigurationType.getInstance().getConfigurationFactories()[0]);
-    runManager.addConfiguration(settings);
-
-    // Get AndroidJUnitRunConfiguration from RunManager
-    List<RunConfiguration> runConfigurations = runManager.getConfigurationsList(AndroidJUnitConfigurationType.getInstance());
-    assertSize(1, runConfigurations);
-    RunConfiguration runConfiguration = runConfigurations.iterator().next();
-    assertInstanceOf(runConfiguration, AndroidJUnitConfiguration.class);
-
-    // Check if BeforeRunTask is correct
-    List<BeforeRunTask<?>> beforeRunTasks = runManager.getBeforeRunTasks(runConfiguration);
-    assertSize(1, beforeRunTasks);
-    assertEquals(MakeBeforeRunTaskProvider.ID, beforeRunTasks.get(0).getProviderId());
-
-    // Re-sync and check again
-    requestSyncAndWait();
-    runConfigurations = runManager.getConfigurationsList(AndroidJUnitConfigurationType.getInstance());
-    assertSize(1, runConfigurations);
-    runConfiguration = runConfigurations.iterator().next();
-    assertInstanceOf(runConfiguration, AndroidJUnitConfiguration.class);
-
-    beforeRunTasks = RunManagerImpl.getInstanceImpl(getProject()).getBeforeRunTasks(runConfiguration);
-    assertSize(1, beforeRunTasks);
-    assertEquals(MakeBeforeRunTaskProvider.ID, beforeRunTasks.get(0).getProviderId());
-  }
-
-  public void testExistingJUnitConfigurationNotModifiedAfterSync() throws Exception {
-    loadSimpleApplication();
-
-    // Create and add RunConfiguration to the RunManager
-    RunManagerImpl runManager = RunManagerImpl.getInstanceImpl(getProject());
-    RunnerAndConfigurationSettings settings = runManager.createConfiguration(
-      createJUnitConfigurationFromClass(getProject(), "google.simpleapplication.UnitTest"),
-      AndroidJUnitConfigurationType.getInstance().getConfigurationFactories()[0]);
-    runManager.addConfiguration(settings);
-
-    // Get AndroidJUnitRunConfiguration from RunManager
-    List<RunConfiguration> runConfigurations = runManager.getConfigurationsList(AndroidJUnitConfigurationType.getInstance());
-    assertSize(1, runConfigurations);
-    RunConfiguration runConfiguration = runConfigurations.iterator().next();
-    assertInstanceOf(runConfiguration, AndroidJUnitConfiguration.class);
-
-    // Check if BeforeRunTask is correct
-    List<BeforeRunTask<?>> beforeRunTasks = runManager.getBeforeRunTasks(runConfiguration);
-    assertSize(1, beforeRunTasks);
-    assertEquals(MakeBeforeRunTaskProvider.ID, beforeRunTasks.get(0).getProviderId());
-
-    // Modify tasks
-    CompileStepBeforeRun.MakeBeforeRunTask ideaMake = BeforeRunTaskProvider.getProvider(getProject(), CompileStepBeforeRun.ID).
-      createTask(runConfiguration);
-    runManager.setBeforeRunTasks(runConfiguration, Lists.<BeforeRunTask>newArrayList(ideaMake));
-
-    // Re-sync and check again
-    requestSyncAndWait();
-    runConfigurations = runManager.getConfigurationsList(AndroidJUnitConfigurationType.getInstance());
-    assertSize(1, runConfigurations);
-    runConfiguration = runConfigurations.iterator().next();
-    assertInstanceOf(runConfiguration, AndroidJUnitConfiguration.class);
-
-    beforeRunTasks = RunManagerImpl.getInstanceImpl(getProject()).getBeforeRunTasks(runConfiguration);
-    assertSize(1, beforeRunTasks);
-    assertEquals(CompileStepBeforeRun.ID, beforeRunTasks.get(0).getProviderId());
-  }
-
-  public void testIsFromContextForDirectoryJUnitConfiguration() throws Exception {
-    loadSimpleApplication();
-    AndroidJUnitConfiguration configuration = createJUnitConfigurationFromDirectory(getProject(), "app/src/test/java");
-    ConfigurationContext context = createContext(getProject(), getPsiElement(getProject(), "app/src/test/java", true));
-    assertTrue(new TestDirectoryAndroidConfigurationProducer().isConfigurationFromContext(configuration, context));
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationTypeTest.java b/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationTypeTest.java
deleted file mode 100644
index d0284f8..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidJUnitConfigurationTypeTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit;
-
-import com.intellij.execution.junit.JUnitConfigurationType;
-import org.jetbrains.android.AndroidTestCase;
-import org.jetbrains.android.util.AndroidBuildCommonUtils;
-import org.junit.Ignore;
-
-/**
- * Tests for {@link AndroidJUnitConfigurationType}
- */
-@Ignore // Broken after 2017.1 merge
-public class AndroidJUnitConfigurationTypeTest extends AndroidTestCase {
-
-  public void testConfigurationTypeIdRegistered() {
-    assertTrue(AndroidBuildCommonUtils.isTestConfiguration(AndroidJUnitConfigurationType.getInstance().getId()));
-  }
-
-  // Since JUnitConfigurationType is disabled in AndroidStudioInitializer, and AndroidJUnitConfigurationType
-  // is registered as child, it should be returned when getInstance() of the parent is called
-  public void testJUnitConfigurationTypeGetInstance() {
-    JUnitConfigurationType configurationType = JUnitConfigurationType.getInstance();
-    assertInstanceOf(configurationType, AndroidJUnitConfigurationType.class);
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidTestObjectTest.kt b/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidTestObjectTest.kt
deleted file mode 100644
index 66cfe69..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/junit/AndroidTestObjectTest.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.junit
-
-import com.android.tools.idea.testartifacts.TestConfigurationTesting.createContext
-import com.android.tools.idea.testing.AndroidGradleTestCase
-import com.google.common.truth.Truth.assertThat
-import com.intellij.execution.RunManager
-import com.intellij.execution.RunnerAndConfigurationSettings
-
-// TODO (karimai) : delete this when test Runner is only through Gradle.
-class AndroidTestObjectTest : AndroidGradleTestCase() {
-  fun testGetListener() {
-    loadSimpleApplication()
-
-    val testClass = myFixture.findClass("google.simpleapplication.UnitTest")
-    val testMethod = testClass.findMethodsByName("passingTest", false).single()
-    val testPackage = myFixture.findPackage("google.simpleapplication")
-
-    val runManager = RunManager.getInstance(project)
-    val testClassRunnerAndSettings = createContext(project, testClass).configuration!!.also(runManager::addConfiguration)
-    val testMethodRunnerAndSettings = createContext(project, testMethod).configuration!!.also(runManager::addConfiguration)
-    val testPackageRunnerAndSettings = createContext(project, testPackage).configuration!!.also(runManager::addConfiguration)
-
-    // Different configurations may care or not about these, we exercise both code paths.
-    myFixture.renameElement(testClass, "RenamedUnitTest")
-    myFixture.renameElement(testMethod, "someTest")
-    myFixture.renameElement(testPackage, "mypackage")
-
-    assertThat(testClassRunnerAndSettings.toAndroidJUnit().persistentData.mainClassName)
-      .isEqualTo("google.mypackage.RenamedUnitTest")
-
-    assertThat(testMethodRunnerAndSettings.toAndroidJUnit().persistentData.mainClassName)
-      .isEqualTo("google.mypackage.RenamedUnitTest")
-    assertThat(testMethodRunnerAndSettings.toAndroidJUnit().persistentData.methodName)
-      .isEqualTo("someTest")
-
-    assertThat(testPackageRunnerAndSettings.toAndroidJUnit().persistentData.packageName)
-      .isEqualTo("google.mypackage")
-  }
-
-  private fun RunnerAndConfigurationSettings.toAndroidJUnit() = configuration as AndroidJUnitConfiguration
-}
\ No newline at end of file
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcherTest.kt b/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcherTest.kt
deleted file mode 100644
index f2f69de..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcherTest.kt
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.scopes
-
-import com.android.testutils.TestUtils.getLatestAndroidPlatform
-import com.android.testutils.TestUtils.getPlatformFile
-import com.android.tools.idea.testing.AndroidModuleModelBuilder
-import com.android.tools.idea.testing.AndroidProjectBuilder
-import com.android.tools.idea.testing.buildDependenciesStub
-import com.android.tools.idea.testing.buildMainArtifactStub
-import com.android.tools.idea.testing.buildUnitTestArtifactStub
-import com.android.tools.idea.testing.setupTestProjectFromAndroidModel
-import com.google.common.collect.Iterables
-import com.google.common.collect.Sets
-import com.google.common.truth.Truth.assertThat
-import com.intellij.execution.configurations.JavaParameters
-import com.intellij.openapi.util.SystemInfo
-import com.intellij.openapi.util.io.FileUtil
-import com.intellij.openapi.util.io.FileUtil.normalize
-import com.intellij.testFramework.UsefulTestCase
-import junit.framework.TestCase
-import org.jetbrains.android.AndroidTestCase
-import org.jetbrains.android.sdk.AndroidPlatform
-import java.io.File
-
-/**
- * Tests for [AndroidJunitPatcher].
- */
-class AndroidJunitPatcherTest : AndroidTestCase() {
-
-  private lateinit var exampleClassPathSet: Set<String>
-  private lateinit var realAndroidJar: String
-  private lateinit var mockableAndroidJar: String
-  private lateinit var kotlinClasses: String
-  private lateinit var testKotlinClasses: String
-  private lateinit var resourcesDirs: Collection<String>
-
-  private lateinit var patcher: AndroidJunitPatcher
-  private lateinit var javaParameters: JavaParameters
-  private lateinit var root: String
-
-  private // Sanity check. These should be fixed by the patcher.
-  fun getExampleClasspath(): List<String> {
-    root = project.basePath!!
-    val exampleClassPath = mutableListOf(
-      root + "/build/intermediates/classes/debug",
-      root + "/build/intermediates/classes/test/debug",
-      root + "/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.0.0/classes.jar",
-      root + "/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.0.0/res",
-      root + "/build/intermediates/exploded-aar/com.android.support/support-v4/22.0.0/classes.jar",
-      root + "/build/intermediates/exploded-aar/com.android.support/support-v4/22.0.0/libs/internal_impl-22.0.0.jar",
-      root + "/build/intermediates/exploded-aar/com.android.support/support-v4/22.0.0/res",
-      "/home/user/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar",
-      "/idea/production/java-runtime", "/idea/production/junit_rt")
-
-    mockableAndroidJar = root + "/build/intermediates/mockable-" + getLatestAndroidPlatform() + ".jar"
-    kotlinClasses = root + "/build/tmp/kotlin-classes/debug"
-    testKotlinClasses = root + "/build/tmp/kotlin-classes/debugUnitTest"
-    val androidPlatform = AndroidPlatform.getInstance(myModule)
-    TestCase.assertNotNull(androidPlatform)
-    realAndroidJar = getPlatformFile("android.jar").toString()
-    resourcesDirs = listOf(
-      root + "/build/intermediates/java_res/debug/out",
-      root + "/build/intermediates/java_res/debugUnitTest/out"
-    )
-
-    exampleClassPath.add(0, mockableAndroidJar)
-    exampleClassPath.add(0, realAndroidJar)
-
-    exampleClassPathSet = exampleClassPath.toSet()
-    assertThat(exampleClassPath).containsAllOf(realAndroidJar, mockableAndroidJar)
-    UsefulTestCase.assertDoesntContain(exampleClassPath, resourcesDirs)
-    assertThat(Iterables.getLast(exampleClassPath)).isNotEqualTo(mockableAndroidJar)
-
-    return exampleClassPath
-  }
-
-  @Throws(Exception::class)
-  public override fun setUp() {
-    super.setUp()
-    patcher = AndroidJunitPatcher()
-    javaParameters = JavaParameters()
-    javaParameters.classPath.addAll(getExampleClasspath())
-  }
-
-  private fun setUpProject(builder: AndroidProjectBuilder) {
-    setupTestProjectFromAndroidModel(
-      project,
-      File(root),
-      AndroidModuleModelBuilder(":", "debug", builder)
-    )
-  }
-
-  fun testPathChanges() {
-    setUpProject(AndroidProjectBuilder())
-    patcher.patchJavaParameters(myModule, javaParameters)
-    val result = javaParameters.classPath.pathList.map { normalize(it) }
-    val resultSet = result.toSet()
-    assertThat(result).doesNotContain(realAndroidJar)
-
-    // Mockable JAR is at the end:
-    TestCase.assertEquals(mockableAndroidJar, Iterables.getLast(result))
-    // Only the real android.jar was removed:
-    assertThat(Sets.difference(exampleClassPathSet, resultSet)).contains(realAndroidJar)
-    // Only expected entries were added:
-    assertThat(Sets.difference(resultSet, exampleClassPathSet)).containsAllIn(resourcesDirs)
-  }
-
-  fun testCaseInsensitivity() {
-    setUpProject(AndroidProjectBuilder())
-    if (!SystemInfo.isWindows) {
-      // This test only makes sense on Windows.
-      println("Skipping AndroidJunitPatcherTest#testCaseInsensitivity: not running on Windows.")
-      return
-    }
-
-    javaParameters.classPath.remove(realAndroidJar)
-    // It's still the same file on Windows:
-    val alsoRealAndroidJar = realAndroidJar.replace("platforms", "Platforms")
-    javaParameters.classPath.addFirst(alsoRealAndroidJar)
-
-    patcher.patchJavaParameters(myModule, javaParameters)
-    val result = javaParameters.classPath.pathList
-    assertThat(result).containsNoneOf(alsoRealAndroidJar, realAndroidJar)
-  }
-
-  fun testMultipleMockableJars_oldModel() {
-    setUpProject(AndroidProjectBuilder())
-    val jar22 = root + "lib1/build/intermediates/mockable-android-22.jar"
-    val jar15 = root + "lib2/build/intermediates/mockable-android-15.jar"
-    val classPath = javaParameters.classPath
-    classPath.addFirst(jar22)
-    classPath.addFirst(jar15)
-
-    patcher.patchJavaParameters(myModule, javaParameters)
-
-    val pathList = classPath.pathList
-    TestCase.assertEquals(mockableAndroidJar, Iterables.getLast(pathList))
-    assertThat(pathList).containsNoneOf(jar15, jar22)
-  }
-
-  fun testMultipleMockableJars_newModel() {
-    setUpProject(AndroidProjectBuilder(
-      unitTestArtifactStub = { buildUnitTestArtifactStub(it, mockablePlatformJar = File(mockableAndroidJar)) }
-    ))
-    javaParameters.classPath.remove(mockableAndroidJar)
-
-    patcher.patchJavaParameters(myModule, javaParameters)
-
-    TestCase.assertEquals(normalize(mockableAndroidJar), normalize(Iterables.getLast(javaParameters.classPath.pathList)))
-  }
-
-  fun testKotlinClasses() {
-    val testKotlinClassesDir = File(testKotlinClasses)
-    setUpProject(AndroidProjectBuilder(
-      mainArtifactStub = { buildMainArtifactStub(it, classFolders = setOf(File(kotlinClasses))) },
-      unitTestArtifactStub = { buildUnitTestArtifactStub(it, classFolders = setOf(testKotlinClassesDir)) }
-    ))
-    javaParameters.classPath.remove(mockableAndroidJar)
-
-    patcher.patchJavaParameters(myModule, javaParameters)
-
-    assertThat(javaParameters.classPath.pathList).contains(testKotlinClassesDir.path)
-  }
-
-  fun testRuntimeClasspath() {
-    val runtimeJar = "/tmp/runtime.jar"
-    // Fix for Windows since the drive will be prepended
-    val canonicalName = FileUtil.toCanonicalPath(File(runtimeJar).absolutePath)
-    setUpProject(AndroidProjectBuilder(
-      unitTestArtifactStub = {
-        buildUnitTestArtifactStub(it, dependencies = buildDependenciesStub(runtimeOnlyClasses = listOf(File(runtimeJar))))
-      }
-    ))
-    patcher.patchJavaParameters(myModule, javaParameters)
-    val result = javaParameters.classPath.pathList.map { normalize(it) }
-    assertThat(result).contains(canonicalName)
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcherWithProjectsTest.java b/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcherWithProjectsTest.java
deleted file mode 100644
index 05b0b39..0000000
--- a/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidJunitPatcherWithProjectsTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.tools.idea.testartifacts.scopes;
-
-import static com.android.tools.idea.testing.TestProjectPaths.JAVA_LIB;
-import static com.android.tools.idea.testing.TestProjectPaths.SYNC_MULTIPROJECT;
-import static com.google.common.truth.Truth.assertThat;
-
-import com.android.tools.idea.testing.AndroidGradleTestCase;
-import com.android.tools.idea.testing.TestModuleUtil;
-import com.intellij.execution.JUnitPatcher;
-import com.intellij.execution.configurations.JavaParameters;
-import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModuleManager;
-import java.io.File;
-import java.nio.file.Files;
-import org.jetbrains.annotations.NotNull;
-
-public class AndroidJunitPatcherWithProjectsTest extends AndroidGradleTestCase {
-
-  public void testRemoveAndroidTestClasspath() throws Exception {
-    loadProject(SYNC_MULTIPROJECT);
-    JUnitPatcher myPatcher = new AndroidJunitPatcher();
-
-    Module module1 = TestModuleUtil.findModule(getProject(), "module1");
-    JavaParameters parameters = new JavaParameters();
-    parameters.configureByModule(module1, JavaParameters.CLASSES_AND_TESTS);
-
-    String classpath = parameters.getClassPath().getPathsString();
-    assertThat(classpath).contains("junit-4.12.jar");
-    assertThat(classpath).contains("gson-2.8.0.jar");
-
-    // JUnit is in test dependency, gson and guava are android test dependency
-    myPatcher.patchJavaParameters(module1, parameters);
-    classpath = parameters.getClassPath().getPathsString();
-    assertThat(classpath).contains("junit-4.12.jar");
-    assertThat(classpath).doesNotContain("gson-2.8.0.jar");
-    assertThat(classpath).doesNotContain("guava-18.0.jar");
-    assertThat(classpath).doesNotContain("module3");
-  }
-
-  public void testJavaLibDependencyResourcesInClasspath() throws Exception {
-    loadProject(JAVA_LIB);
-    testJavaLibResources("app");
-    testKotlinClasses("app");
-  }
-
-  public void testJavaLibModuleResourcesInClasspath() throws Exception {
-    loadProject(JAVA_LIB);
-    testJavaLibResources("lib");
-    testKotlinClasses("lib");
-  }
-
-  private void testJavaLibResources(@NotNull String moduleToTest) throws Exception {
-    JUnitPatcher myPatcher = new AndroidJunitPatcher();
-
-    Module module = TestModuleUtil.findModule(getProject(), moduleToTest);
-    JavaParameters parameters = new JavaParameters();
-    parameters.configureByModule(module, JavaParameters.CLASSES_AND_TESTS);
-
-    File projectPath = getProjectFolderPath();
-    String javaTestResources = new File(projectPath, "/lib/build/resources/test").toString();
-    String javaMainResources = new File(projectPath, "/lib/build/resources/main").toString();
-
-    String classpath = parameters.getClassPath().getPathsString();
-    assertThat(classpath).doesNotContain(javaTestResources);
-    assertThat(classpath).doesNotContain(javaMainResources);
-
-    myPatcher.patchJavaParameters(module, parameters);
-    classpath = parameters.getClassPath().getPathsString();
-
-    assertThat(classpath).contains(javaTestResources);
-    assertThat(classpath).contains(javaMainResources);
-  }
-
-  private void testKotlinClasses(@NotNull String moduleToTest) throws Exception {
-    File projectPath = getProjectFolderPath();
-    File kotlinMainClasses = new File(projectPath, "/lib/build/classes/kotlin/main");
-    File kotlinTestClasses = new File(projectPath, "/lib/build/classes/kotlin/test");
-
-    // Simulate Kotlin Gradle plugin 1.1.4 and Gradle 4.0
-    Files.createDirectories(kotlinMainClasses.toPath());
-    Files.createDirectories(kotlinTestClasses.toPath());
-
-    Module module = TestModuleUtil.findModule(getProject(), moduleToTest);
-    JavaParameters parameters = new JavaParameters();
-    parameters.configureByModule(module, JavaParameters.CLASSES_AND_TESTS);
-
-    String classpath = parameters.getClassPath().getPathsString();
-    assertThat(classpath).doesNotContain(kotlinMainClasses.toString());
-    assertThat(classpath).doesNotContain(kotlinTestClasses.toString());
-
-    JUnitPatcher myPatcher = new AndroidJunitPatcher();
-    myPatcher.patchJavaParameters(module, parameters);
-    classpath = parameters.getClassPath().getPathsString();
-
-    assertThat(classpath).contains(kotlinMainClasses.toString());
-    assertThat(classpath).contains(kotlinTestClasses.toString());
-  }
-}
diff --git a/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidTestAndGradleConfigurationConflictsTest.kt b/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidTestAndGradleConfigurationConflictsTest.kt
index b43537a..305b8f7 100644
--- a/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidTestAndGradleConfigurationConflictsTest.kt
+++ b/android/testSrc/com/android/tools/idea/testartifacts/scopes/AndroidTestAndGradleConfigurationConflictsTest.kt
@@ -15,7 +15,6 @@
  */
 package com.android.tools.idea.testartifacts.scopes
 
-import com.android.tools.idea.flags.StudioFlags
 import com.android.tools.idea.testartifacts.TestConfigurationTesting
 import com.android.tools.idea.testartifacts.createAndroidGradleConfigurationFromDirectory
 import com.android.tools.idea.testing.AndroidGradleTestCase
@@ -29,17 +28,6 @@
  */
 class AndroidTestAndGradleConfigurationConflictsTest : AndroidGradleTestCase() {
   // See: http://b.android.com/173106394
-  override fun setUp() {
-    super.setUp()
-    StudioFlags.GRADLE_UNIT_TESTING.override(true)
-  }
-
-  @Throws(Exception::class)
-  override fun tearDown() {
-    super.tearDown()
-    StudioFlags.GRADLE_UNIT_TESTING.clearOverride()
-  }
-
   @Throws(Exception::class)
   fun testCanCreateInstrumentedTestConfiguration() {
     loadSimpleApplication()
diff --git a/kotlin-integration/testSrc/com/android/tools/idea/testing/UnitTestingSupportIntegrationTest.kt b/kotlin-integration/testSrc/com/android/tools/idea/testing/UnitTestingSupportIntegrationTest.kt
index 7ee9bdc..9974ab3 100644
--- a/kotlin-integration/testSrc/com/android/tools/idea/testing/UnitTestingSupportIntegrationTest.kt
+++ b/kotlin-integration/testSrc/com/android/tools/idea/testing/UnitTestingSupportIntegrationTest.kt
@@ -23,10 +23,8 @@
 import com.android.tools.idea.gradle.project.build.invoker.GradleBuildInvoker
 import com.android.tools.idea.gradle.project.build.invoker.GradleInvocationResult
 import com.android.tools.idea.testartifacts.TestConfigurationTesting.createContext
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration
 import com.google.common.truth.Truth.assertThat
 import com.google.wireless.android.sdk.stats.AndroidStudioEvent
-import com.google.wireless.android.sdk.stats.TestRun
 import com.intellij.execution.ExecutionListener
 import com.intellij.execution.ExecutionManager
 import com.intellij.execution.RunnerAndConfigurationSettings
@@ -43,9 +41,9 @@
 import com.intellij.openapi.vfs.VirtualFileManager
 import com.intellij.testFramework.TestRunnerUtil
 import com.intellij.testFramework.runInEdtAndWait
+import org.junit.Ignore
 import java.util.concurrent.ConcurrentSkipListSet
 import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicReference
 
 /**
@@ -69,6 +67,8 @@
  *
  * The test project uses 3.0 features, so you may need to set STUDIO_CUSTOM_REPO to point to a recent build of our gradle plugin.
  */
+@Ignore
+// TODO(karimai): Re-enable in a separate dedicated change.
 class UnitTestingSupportIntegrationTest : AndroidGradleTestCase() {
   override fun runInDispatchThread(): Boolean = false
   override fun invokeTestRunnable(runnable: Runnable) = runnable.run()
@@ -266,7 +266,7 @@
 
     runInEdtAndWait {
       val runnerConfigurationSettings = createRunnerConfigurationSettingsForClass("com.example.app.AppJavaUnitTest")
-      val androidJUnit = runnerConfigurationSettings.configuration as AndroidJUnitConfiguration
+      val androidJUnit = runnerConfigurationSettings.configuration as JUnitConfiguration
       androidJUnit.persistentData.TEST_OBJECT = JUnitConfiguration.TEST_PACKAGE
       androidJUnit.persistentData.TEST_SEARCH_SCOPE.scope = TestSearchScope.MODULE_WITH_DEPENDENCIES
       androidJUnit.persistentData.MAIN_CLASS_NAME = ""
@@ -283,7 +283,7 @@
    */
   fun testPatternTestObject() = runInEdtAndWait {
     val runnerConfigurationSettings = createRunnerConfigurationSettingsForClass("com.example.app.AppJavaUnitTest")
-    val androidJUnit = runnerConfigurationSettings.configuration as AndroidJUnitConfiguration
+    val androidJUnit = runnerConfigurationSettings.configuration as JUnitConfiguration
     androidJUnit.persistentData.TEST_OBJECT = JUnitConfiguration.TEST_PATTERN
     androidJUnit.persistentData.TEST_SEARCH_SCOPE.scope = TestSearchScope.MODULE_WITH_DEPENDENCIES
     androidJUnit.persistentData.MAIN_CLASS_NAME = ""
diff --git a/project-system-gradle-sync/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt b/project-system-gradle-sync/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt
index 909971c..521e791 100644
--- a/project-system-gradle-sync/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt
+++ b/project-system-gradle-sync/src/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataService.kt
@@ -38,15 +38,11 @@
 import com.android.tools.idea.run.RunConfigurationChecker
 import com.android.tools.idea.sdk.AndroidSdks
 import com.android.tools.idea.sdk.IdeSdks
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationType
 import com.google.common.annotations.VisibleForTesting
 import com.intellij.compiler.options.CompileStepBeforeRun
 import com.intellij.execution.BeforeRunTask
 import com.intellij.execution.BeforeRunTaskProvider
 import com.intellij.execution.RunManagerEx
-import com.intellij.execution.RunnerAndConfigurationSettings
-import com.intellij.execution.configurations.ConfigurationType
 import com.intellij.execution.configurations.RunConfiguration
 import com.intellij.openapi.application.ApplicationManager
 import com.intellij.openapi.externalSystem.model.DataNode
@@ -155,7 +151,6 @@
     findConflicts(project).showSelectionConflicts()
     ProjectSetup(project).setUpProject(false /* sync successful */)
 
-    modifyJUnitRunConfigurations(project)
     RunConfigurationChecker.getInstance(project).ensureRunConfigsInvokeBuild()
 
     ProjectStructure.getInstance(project).analyzeProjectStructure()
@@ -225,35 +220,6 @@
 }
 
 // TODO: Find a better place for this method.
-private fun modifyJUnitRunConfigurations(project: Project) {
-  val junitConfigurationType: ConfigurationType = AndroidJUnitConfigurationType.getInstance()
-  val taskProviders = BeforeRunTaskProvider.EXTENSION_POINT_NAME.getExtensions(project)
-  val runManager = RunManagerEx.getInstanceEx(project)
-  // For Android Studio, use "Gradle-Aware Make" to run JUnit tests.
-  // For IDEA, use regular "Make".
-  val makeTaskId = if (IdeInfo.getInstance().isAndroidStudio) MakeBeforeRunTaskProvider.ID else CompileStepBeforeRun.ID
-  val targetProvider: BeforeRunTaskProvider<*>? = taskProviders.first { it.id == makeTaskId }
-
-  if (targetProvider != null) {
-    // Store current before run tasks in each configuration to reset them after modifying the template, since modifying
-    val currentTasks = runManager.getConfigurationsList(junitConfigurationType).associateWith { runManager.getBeforeRunTasks(it) }
-    // Fix the "JUnit Run Configuration" templates.
-    for (configurationFactory in junitConfigurationType.configurationFactories) {
-      val template: RunnerAndConfigurationSettings = runManager.getConfigurationTemplate(configurationFactory)
-      val runConfiguration = template.configuration as AndroidJUnitConfiguration
-      // Set the correct "Make step" in the "JUnit Run Configuration" template.
-      setMakeStepInJUnitConfiguration(project, targetProvider, runConfiguration)
-      runConfiguration.workingDirectory = "$" + PathMacroUtil.MODULE_DIR_MACRO_NAME + "$"
-    }
-    // Fix existing JUnit Configurations.
-    for (runConfiguration in runManager.getConfigurationsList(junitConfigurationType)) {
-      // Keep the previous configurations in existing run configurations
-      runManager.setBeforeRunTasks(runConfiguration, currentTasks[runConfiguration]!!)
-    }
-  }
-}
-
-// TODO: Find a better place for this method.
 private fun setMakeStepInJUnitConfiguration(
   project: Project,
   targetProvider: BeforeRunTaskProvider<*>,
diff --git a/project-system-gradle-sync/testSrc/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataServiceTest.java b/project-system-gradle-sync/testSrc/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataServiceTest.java
index 05c1df4..d0d2421 100644
--- a/project-system-gradle-sync/testSrc/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataServiceTest.java
+++ b/project-system-gradle-sync/testSrc/com/android/tools/idea/projectsystem/gradle/sync/AndroidModuleDataServiceTest.java
@@ -26,23 +26,9 @@
 import com.android.tools.idea.gradle.project.model.AndroidModuleModel;
 import com.android.tools.idea.gradle.project.sync.ModuleSetupContext;
 import com.android.tools.idea.gradle.project.sync.validation.android.AndroidModuleValidator;
-import com.android.tools.idea.gradle.run.MakeBeforeRunTaskProvider;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfigurationType;
 import com.android.tools.idea.testing.AndroidGradleTestCase;
-import com.android.tools.idea.testing.AndroidGradleTestUtilsKt;
-import com.android.tools.idea.testing.AndroidModuleModelBuilder;
-import com.android.tools.idea.testing.AndroidProjectBuilder;
-import com.android.tools.idea.testing.IdeComponents;
 import com.android.tools.idea.testing.ProjectFiles;
 import com.android.tools.idea.testing.TestModuleUtil;
-import com.google.common.collect.ImmutableList;
-import com.intellij.execution.BeforeRunTask;
-import com.intellij.execution.RunManagerEx;
-import com.intellij.execution.RunnerAndConfigurationSettings;
-import com.intellij.execution.configurations.ConfigurationFactory;
-import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.impl.RunManagerImpl;
 import com.intellij.facet.FacetManager;
 import com.intellij.openapi.externalSystem.model.DataNode;
 import com.intellij.openapi.externalSystem.model.project.ProjectData;
@@ -50,10 +36,7 @@
 import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.project.Project;
-import java.io.File;
 import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
 import org.jetbrains.android.facet.AndroidFacet;
 import org.mockito.Mock;
 
@@ -130,43 +113,4 @@
     assertFalse(gradleProjectInfo.isImportedProject());
     assertFalse(gradleProjectInfo.isNewProject());
   }
-
-  public void testOnSuccessJUnitRunConfigurationSetup() throws Exception {
-    AndroidGradleTestUtilsKt.setupTestProjectFromAndroidModel(
-      getProject(),
-      new File(getProject().getBasePath()),
-      new AndroidModuleModelBuilder(":", "debug", new AndroidProjectBuilder()));
-
-    RunManagerEx runManager = RunManagerImpl.getInstanceImpl(getProject());
-
-    new AndroidModuleDataService().onSuccessImport(
-      ImmutableList.of(), null, getProject(), mock(IdeModifiableModelsProvider.class)
-    );
-    ConfigurationFactory configurationFactory = AndroidJUnitConfigurationType.getInstance().getConfigurationFactories()[0];
-    Project project = getProject();
-    AndroidJUnitConfiguration jUnitConfiguration = new AndroidJUnitConfiguration(project, configurationFactory);
-    RunnerAndConfigurationSettings settings = runManager.createConfiguration(jUnitConfiguration, configurationFactory);
-    settings.storeInDotIdeaFolder();
-    runManager.addConfiguration(settings);
-
-    List<RunConfiguration> junitRunConfigurations = runManager.getConfigurationsList(AndroidJUnitConfigurationType.getInstance());
-    for (RunConfiguration runConfiguration : junitRunConfigurations) {
-      assertSize(1, runManager.getBeforeRunTasks(runConfiguration));
-      assertEquals(MakeBeforeRunTaskProvider.ID, runManager.getBeforeRunTasks(runConfiguration).get(0).getProviderId());
-    }
-
-    RunConfiguration runConfiguration = junitRunConfigurations.get(0);
-    List<BeforeRunTask> tasks = new LinkedList<>(runManager.getBeforeRunTasks(runConfiguration));
-
-    MakeBeforeRunTaskProvider taskProvider = new MakeBeforeRunTaskProvider(project);
-    BeforeRunTask newTask = taskProvider.createTask(runConfiguration);
-    newTask.setEnabled(true);
-    tasks.add(newTask);
-    runManager.setBeforeRunTasks(runConfiguration, tasks);
-
-    new AndroidModuleDataService().onSuccessImport(
-      ImmutableList.of(), null, getProject(), mock(IdeModifiableModelsProvider.class)
-    );
-    assertSize(2, runManager.getBeforeRunTasks(runConfiguration));
-  }
 }
\ No newline at end of file
diff --git a/project-system-gradle/src/com/android/tools/idea/gradle/run/MakeBeforeRunTaskProvider.java b/project-system-gradle/src/com/android/tools/idea/gradle/run/MakeBeforeRunTaskProvider.java
index 7642ade..7b47236 100644
--- a/project-system-gradle/src/com/android/tools/idea/gradle/run/MakeBeforeRunTaskProvider.java
+++ b/project-system-gradle/src/com/android/tools/idea/gradle/run/MakeBeforeRunTaskProvider.java
@@ -61,7 +61,6 @@
 import com.android.tools.idea.run.editor.ProfilerState;
 import com.android.tools.idea.stats.RunStats;
 import com.android.tools.idea.testartifacts.instrumented.AndroidTestRunConfiguration;
-import com.android.tools.idea.testartifacts.junit.AndroidJUnitConfiguration;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Charsets;
 import com.google.common.base.Joiner;
@@ -628,11 +627,6 @@
   @NotNull
   private Module[] getModules(@Nullable DataContext context, @Nullable RunConfiguration configuration) {
     if (configuration instanceof ModuleRunProfile) {
-      // If running JUnit tests for "whole project", all the modules should be compiled, but getModules() return an empty array.
-      // See http://b.android.com/230678
-      if (configuration instanceof AndroidJUnitConfiguration) {
-        return ((AndroidJUnitConfiguration)configuration).getModulesToCompile();
-      }
       // ModuleBasedConfiguration includes Android and JUnit run configurations, including "JUnit: Rerun Failed Tests",
       // which is AbstractRerunFailedTestsAction.MyRunProfile.
       return ((ModuleRunProfile)configuration).getModules();
diff --git a/studio/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml b/studio/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml
index 6ed6ac4..17d83ec 100644
--- a/studio/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml
+++ b/studio/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml
@@ -283,12 +283,6 @@
     <option name="data" path="ActionManager" hit="Add sample data file" />
     <option name="file" path="ActionManager" hit="Add sample data file" />
     <option name="sample" path="ActionManager" hit="Add sample data file" />
-    <option name="add" path="ActionManager" hit="Add to Android JUnit pattern suite" />
-    <option name="android" path="ActionManager" hit="Add to Android JUnit pattern suite" />
-    <option name="junit" path="ActionManager" hit="Add to Android JUnit pattern suite" />
-    <option name="pattern" path="ActionManager" hit="Add to Android JUnit pattern suite" />
-    <option name="suite" path="ActionManager" hit="Add to Android JUnit pattern suite" />
-    <option name="to" path="ActionManager" hit="Add to Android JUnit pattern suite" />
     <option name="a" path="ActionManager" hit="Adds a new data sample file" />
     <option name="adds" path="ActionManager" hit="Adds a new data sample file" />
     <option name="data" path="ActionManager" hit="Adds a new data sample file" />
@@ -504,9 +498,6 @@
     <option name="instant" path="ActionManager" hit="Enables Instant Apps Support for a Module" />
     <option name="module" path="ActionManager" hit="Enables Instant Apps Support for a Module" />
     <option name="support" path="ActionManager" hit="Enables Instant Apps Support for a Module" />
-    <option name="exclude" path="ActionManager" hit="Exclude from suite" />
-    <option name="from" path="ActionManager" hit="Exclude from suite" />
-    <option name="suite" path="ActionManager" hit="Exclude from suite" />
     <option name="export" path="ActionManager" hit="Export to Zip File..." />
     <option name="file" path="ActionManager" hit="Export to Zip File..." />
     <option name="to" path="ActionManager" hit="Export to Zip File..." />