AndroidTestRunner.java revision ff1df69dd4835c177c724e1b5f1ba02d1f674047
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.test;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.Instrumentation;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
21ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wangimport android.os.PerformanceCollector.PerformanceResultsWriter;
22ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.google.android.collect.Lists;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.Test;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestListener;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestResult;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestSuite;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.runner.BaseTestRunner;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.lang.reflect.InvocationTargetException;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class AndroidTestRunner extends BaseTestRunner {
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private TestResult mTestResult;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String mTestClassName;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private List<TestCase> mTestCases;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private Context mContext;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private boolean mSkipExecution = false;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private List<TestListener> mTestListeners = Lists.newArrayList();
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private Instrumentation mInstrumentation;
44ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang    private PerformanceResultsWriter mPerfWriter;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SuppressWarnings("unchecked")
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setTestClassName(String testClassName, String testMethodName) {
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Class testClass = loadTestClass(testClassName);
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (shouldRunSingleTestMethod(testMethodName, testClass)) {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TestCase testCase = buildSingleTestMethod(testClass, testMethodName);
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTestCases = Lists.newArrayList(testCase);
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTestClassName = testClass.getSimpleName();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setTest(getTest(testClass), testClass);
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setTest(Test test) {
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setTest(test, test.getClass());
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void setTest(Test test, Class<? extends Test> testClass) {
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTestCases = (List<TestCase>) TestCaseUtil.getTests(test, true);
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (TestSuite.class.isAssignableFrom(testClass)) {
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTestClassName = TestCaseUtil.getTestName(test);
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTestClassName = testClass.getSimpleName();
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void clearTestListeners() {
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTestListeners.clear();
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void addTestListener(TestListener testListener) {
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (testListener != null) {
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTestListeners.add(testListener);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @SuppressWarnings("unchecked")
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private Class<? extends Test> loadTestClass(String testClassName) {
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return (Class<? extends Test>) mContext.getClassLoader().loadClass(testClassName);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (ClassNotFoundException e) {
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            runFailed("Could not find test class. Class: " + testClassName);
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return null;
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private TestCase buildSingleTestMethod(Class testClass, String testMethodName) {
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            TestCase testCase = (TestCase) testClass.newInstance();
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testCase.setName(testMethodName);
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return testCase;
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (IllegalAccessException e) {
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            runFailed("Could not access test class. Class: " + testClass.getName());
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (InstantiationException e) {
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            runFailed("Could not instantiate test class. Class: " + testClass.getName());
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return null;
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private boolean shouldRunSingleTestMethod(String testMethodName,
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Class<? extends Test> testClass) {
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return testMethodName != null && TestCase.class.isAssignableFrom(testClass);
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private Test getTest(Class clazz) {
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (TestSuiteProvider.class.isAssignableFrom(clazz)) {
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            try {
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                TestSuiteProvider testSuiteProvider =
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                        (TestSuiteProvider) clazz.getConstructor().newInstance();
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                return testSuiteProvider.getTestSuite();
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } catch (InstantiationException e) {
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                runFailed("Could not instantiate test suite provider. Class: " + clazz.getName());
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } catch (IllegalAccessException e) {
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                runFailed("Illegal access of test suite provider. Class: " + clazz.getName());
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } catch (InvocationTargetException e) {
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                runFailed("Invocation exception test suite provider. Class: " + clazz.getName());
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } catch (NoSuchMethodException e) {
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                runFailed("No such method on test suite provider. Class: " + clazz.getName());
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getTest(clazz.getName());
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected TestResult createTestResult() {
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (mSkipExecution) {
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new NoExecTestResult();
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return new TestResult();
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setSkipExecution(boolean skip) {
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mSkipExecution = skip;
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public List<TestCase> getTestCases() {
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTestCases;
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getTestClassName() {
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTestClassName;
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public TestResult getTestResult() {
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTestResult;
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void runTest() {
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        runTest(createTestResult());
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void runTest(TestResult testResult) {
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mTestResult = testResult;
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestListener testListener : mTestListeners) {
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mTestResult.addListener(testListener);
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
164a8db0a4ff6689f9f00dea6af44e65aa32a8546e1Jack Wang        Context testContext = mInstrumentation == null ? mContext : mInstrumentation.getContext();
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        for (TestCase testCase : mTestCases) {
16644a29dd097350e3050e44a2f64aa4c75d26ec695Dmitri Plotnikov            setContextIfAndroidTestCase(testCase, mContext, testContext);
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setInstrumentationIfInstrumentationTestCase(testCase, mInstrumentation);
168ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang            setPerformanceWriterIfPerformanceTestCase(testCase, mPerfWriter);
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testCase.run(mTestResult);
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
17344a29dd097350e3050e44a2f64aa4c75d26ec695Dmitri Plotnikov    private void setContextIfAndroidTestCase(Test test, Context context, Context testContext) {
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (AndroidTestCase.class.isAssignableFrom(test.getClass())) {
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ((AndroidTestCase) test).setContext(context);
17644a29dd097350e3050e44a2f64aa4c75d26ec695Dmitri Plotnikov            ((AndroidTestCase) test).setTestContext(testContext);
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setContext(Context context) {
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mContext = context;
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private void setInstrumentationIfInstrumentationTestCase(
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Test test, Instrumentation instrumentation) {
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (InstrumentationTestCase.class.isAssignableFrom(test.getClass())) {
1877aba54b2edcb94f43c991c555b23fc1de364835eJack Wang            ((InstrumentationTestCase) test).injectInstrumentation(instrumentation);
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
191ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang    private void setPerformanceWriterIfPerformanceTestCase(
192ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang            Test test, PerformanceResultsWriter writer) {
193ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang        if (PerformanceTestBase.class.isAssignableFrom(test.getClass())) {
194ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang            ((PerformanceTestBase) test).setPerformanceResultsWriter(writer);
195ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang        }
196ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang    }
197ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang
1987aba54b2edcb94f43c991c555b23fc1de364835eJack Wang    public void setInstrumentation(Instrumentation instrumentation) {
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mInstrumentation = instrumentation;
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2027aba54b2edcb94f43c991c555b23fc1de364835eJack Wang    /**
2037aba54b2edcb94f43c991c555b23fc1de364835eJack Wang     * @deprecated Incorrect spelling,
2047aba54b2edcb94f43c991c555b23fc1de364835eJack Wang     * use {@link #setInstrumentation(android.app.Instrumentation)} instead.
2057aba54b2edcb94f43c991c555b23fc1de364835eJack Wang     */
2067aba54b2edcb94f43c991c555b23fc1de364835eJack Wang    @Deprecated
2077aba54b2edcb94f43c991c555b23fc1de364835eJack Wang    public void setInstrumentaiton(Instrumentation instrumentation) {
2087aba54b2edcb94f43c991c555b23fc1de364835eJack Wang        setInstrumentation(instrumentation);
2097aba54b2edcb94f43c991c555b23fc1de364835eJack Wang    }
2107aba54b2edcb94f43c991c555b23fc1de364835eJack Wang
211ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang    /**
212ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang     * {@hide} Pending approval for public API.
213ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang     */
214ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang    public void setPerformanceResultsWriter(PerformanceResultsWriter writer) {
215ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang        mPerfWriter = writer;
216ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang    }
217ff1df69dd4835c177c724e1b5f1ba02d1f674047Jack Wang
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected Class loadSuiteClass(String suiteClassName) throws ClassNotFoundException {
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mContext.getClassLoader().loadClass(suiteClassName);
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testStarted(String testName) {
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testEnded(String testName) {
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testFailed(int status, Test test, Throwable t) {
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void runFailed(String message) {
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        throw new RuntimeException(message);
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
236