153196f43b44ff02da07c243798168d7e5614ec34Brett Chabot/* 253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * Copyright (C) 2012 The Android Open Source Project 353196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * 453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * Licensed under the Apache License, Version 2.0 (the "License"); 553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * you may not use this file except in compliance with the License. 653196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * You may obtain a copy of the License at 753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * 853196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * http://www.apache.org/licenses/LICENSE-2.0 953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * 1053196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * Unless required by applicable law or agreed to in writing, software 1153196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * distributed under the License is distributed on an "AS IS" BASIS, 1253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1353196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * See the License for the specific language governing permissions and 1453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * limitations under the License. 1553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot */ 1653196f43b44ff02da07c243798168d7e5614ec34Brett Chabotpackage com.android.test.runner; 1753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 1853196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport android.app.Instrumentation; 1953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 203604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabotimport com.android.test.runner.junit3.AndroidJUnit3Builder; 213604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabotimport com.android.test.runner.junit4.AndroidJUnit4Builder; 223604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabot 2353196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport org.junit.internal.builders.AllDefaultPossibilitiesBuilder; 2453196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport org.junit.runner.Runner; 2553196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport org.junit.runners.model.RunnerBuilder; 2653196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 2753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot/** 2853196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * A {@link RunnerBuilder} that can handle all types of tests. 2953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot */ 3053196f43b44ff02da07c243798168d7e5614ec34Brett Chabotclass AndroidRunnerBuilder extends AllDefaultPossibilitiesBuilder { 3153196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 3253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot private final Instrumentation mInstr; 3353196f43b44ff02da07c243798168d7e5614ec34Brett Chabot private final AndroidJUnit3Builder mAndroidJUnit3Builder; 3453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot private final AndroidJUnit4Builder mAndroidJUnit4Builder; 3553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 363604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabot public AndroidRunnerBuilder(boolean canUseSuiteMethod, Instrumentation instr, 373604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabot boolean skipExecution) { 3853196f43b44ff02da07c243798168d7e5614ec34Brett Chabot super(canUseSuiteMethod); 3953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot mInstr = instr; 403604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabot mAndroidJUnit3Builder = new AndroidJUnit3Builder(mInstr, skipExecution); 413604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabot mAndroidJUnit4Builder = new AndroidJUnit4Builder(mInstr, skipExecution); 4253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot } 4353196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 4453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot @Override 4553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot public Runner runnerForClass(Class<?> testClass) throws Throwable { 4653196f43b44ff02da07c243798168d7e5614ec34Brett Chabot Runner runner = mAndroidJUnit3Builder.safeRunnerForClass(testClass); 4753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot if (runner != null) { 4853196f43b44ff02da07c243798168d7e5614ec34Brett Chabot return runner; 4953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot } 5053196f43b44ff02da07c243798168d7e5614ec34Brett Chabot runner = mAndroidJUnit4Builder.safeRunnerForClass(testClass); 5153196f43b44ff02da07c243798168d7e5614ec34Brett Chabot if (runner != null) { 5253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot return runner; 5353196f43b44ff02da07c243798168d7e5614ec34Brett Chabot } 5453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot return super.runnerForClass(testClass); 5553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot } 5653196f43b44ff02da07c243798168d7e5614ec34Brett Chabot 5753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot} 58