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 */
163604db5bcd124dfd1396fb51434d3f4337690cffBrett Chabotpackage com.android.test.runner.junit3;
1753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot
1853196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport android.app.Instrumentation;
1953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot
2053196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport junit.framework.TestCase;
2116522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabotimport junit.framework.TestSuite;
2253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot
2353196f43b44ff02da07c243798168d7e5614ec34Brett Chabotimport org.junit.internal.runners.JUnit38ClassRunner;
2453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot
2553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot/**
2653196f43b44ff02da07c243798168d7e5614ec34Brett Chabot * A specialized {@link JUnit38ClassRunner} that can handle specialized Android {@link TestCase}s.
2753196f43b44ff02da07c243798168d7e5614ec34Brett Chabot */
2853196f43b44ff02da07c243798168d7e5614ec34Brett Chabotclass AndroidJUnit3ClassRunner extends JUnit38ClassRunner {
2953196f43b44ff02da07c243798168d7e5614ec34Brett Chabot
3053196f43b44ff02da07c243798168d7e5614ec34Brett Chabot    /**
3153196f43b44ff02da07c243798168d7e5614ec34Brett Chabot     * @param klass
3253196f43b44ff02da07c243798168d7e5614ec34Brett Chabot     */
3353196f43b44ff02da07c243798168d7e5614ec34Brett Chabot    public AndroidJUnit3ClassRunner(Class<?> klass, Instrumentation instr) {
3453196f43b44ff02da07c243798168d7e5614ec34Brett Chabot        super(new AndroidTestSuite(klass.asSubclass(TestCase.class), instr));
3553196f43b44ff02da07c243798168d7e5614ec34Brett Chabot    }
3616522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot
3716522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    @Override
3816522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    protected TestSuite createCopyOfSuite(TestSuite s) {
3916522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        if (s instanceof AndroidTestSuite) {
4016522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot            AndroidTestSuite a = (AndroidTestSuite)s;
4116522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot            return new AndroidTestSuite(a.getName(), a.getInstrumentation());
4216522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        } else {
4316522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot            return super.createCopyOfSuite(s);
4416522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot        }
4516522ab7fbaaa627c2c51cfc1339c2248af6df1bBrett Chabot    }
4653196f43b44ff02da07c243798168d7e5614ec34Brett Chabot}
47