diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java new file mode 100644 index 000000000..32c5ef81e --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php + * + * 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.ide.eclipse.adt.internal.launch.junit.runtime; + +import com.android.ddmlib.testrunner.ITestRunListener; +import com.android.ddmlib.testrunner.TestIdentifier; + +import java.util.Map; + +/** + * Collects info about tests to be executed by listening to the results of an Android test run. + */ +class TestCollector implements ITestRunListener { + private final String mDeviceName; + private final TestSuiteReference mDeviceSuiteRef; + + private int mTotalTestCount; + /** test name to test suite reference map. */ + + private String mErrorMessage = null; + + TestCollector(String deviceName) { + mDeviceName = deviceName; + mDeviceSuiteRef = new TestSuiteReference(deviceName); + + mTotalTestCount = 0; + } + + @Override + public synchronized void testEnded(TestIdentifier test, Map<String, String> testMetrics) { + // ignore + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testFailed(com.android.ddmlib.testrunner.TestIdentifier, java.lang.String) + */ + @Override + public synchronized void testFailed(TestIdentifier test, String trace) { + // ignore - should be impossible since this is only collecting test information + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testIgnored(com.android.ddmlib.testrunner.TestIdentifier) + */ + @Override + public synchronized void testIgnored(TestIdentifier test) { + // ignore - should be impossible since this is only collecting test information + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testAssumptionFailure(com.android.ddmlib.testrunner.TestIdentifier, java.lang.String) + */ + @Override + public synchronized void testAssumptionFailure(TestIdentifier test, String trace) { + // ignore - should be impossible since this is only collecting test information + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testRunEnded(long, Map<String, String>) + */ + @Override + public synchronized void testRunEnded(long elapsedTime, Map<String, String> runMetrics) { + // ignore + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testRunFailed(java.lang.String) + */ + @Override + public synchronized void testRunFailed(String errorMessage) { + mErrorMessage = errorMessage; + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testRunStarted(int) + */ + @Override + public synchronized void testRunStarted(String ignoredRunName, int testCount) { + mTotalTestCount = testCount; + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testRunStopped(long) + */ + @Override + public synchronized void testRunStopped(long elapsedTime) { + // ignore + } + + /* (non-Javadoc) + * @see com.android.ddmlib.testrunner.ITestRunListener#testStarted(com.android.ddmlib.testrunner.TestIdentifier) + */ + @Override + public synchronized void testStarted(TestIdentifier test) { + TestSuiteReference suiteRef = mDeviceSuiteRef.getTestSuite(test.getClassName()); + if (suiteRef == null) { + suiteRef = new TestSuiteReference(test.getClassName()); + mDeviceSuiteRef.addTest(suiteRef); + } + + suiteRef.addTest(new TestCaseReference(mDeviceName, test)); + } + + /** + * Returns the total test count in the test run. + */ + public synchronized int getTestCaseCount() { + return mTotalTestCount; + } + + /** + * Returns the error message that was reported when collecting test info. + * Returns <code>null</code> if no error occurred. + */ + public synchronized String getErrorMessage() { + return mErrorMessage; + } + + public TestSuiteReference getDeviceSuite() { + return mDeviceSuiteRef; + } +} |