summaryrefslogtreecommitdiffstats
path: root/test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java
diff options
context:
space:
mode:
authorBrett Chabot <brettchabot@android.com>2010-02-18 17:56:11 -0800
committerBrett Chabot <brettchabot@android.com>2010-02-19 09:58:29 -0800
commit12093976a4842a795491cfd2b1d3b71e18503f2d (patch)
tree04d06cdfe57151ca3856eab6c405f260583cf1fa /test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java
parent5df3a9017eaac2aef2ad360ce8f298b2d60b5536 (diff)
downloadframeworks_base-12093976a4842a795491cfd2b1d3b71e18503f2d.zip
frameworks_base-12093976a4842a795491cfd2b1d3b71e18503f2d.tar.gz
frameworks_base-12093976a4842a795491cfd2b1d3b71e18503f2d.tar.bz2
Move framework test-runner unit tests to be closer to their source.
Move the test-runner source into a separate src folder to accommodate the test move.
Diffstat (limited to 'test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java')
-rw-r--r--test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java116
1 files changed, 116 insertions, 0 deletions
diff --git a/test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java b/test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java
new file mode 100644
index 0000000..1872803
--- /dev/null
+++ b/test-runner/tests/src/android/test/suitebuilder/InstrumentationTestSuiteBuilderTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2008 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 android.test.suitebuilder;
+
+import static android.test.suitebuilder.ListTestCaseNames.getTestCaseNames;
+import android.test.suitebuilder.examples.OuterTest;
+import android.test.suitebuilder.examples.instrumentation.InstrumentationTest;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestListener;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class InstrumentationTestSuiteBuilderTest extends TestCase {
+
+ private InstrumentationTestSuiteBuilder instrumentationTestSuiteBuilder;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ instrumentationTestSuiteBuilder = new InstrumentationTestSuiteBuilder(getClass());
+ }
+
+ public void testShouldIncludeIntrumentationTests() throws Exception {
+ instrumentationTestSuiteBuilder.includePackages(packageFor(InstrumentationTest.class));
+
+ SuiteExecutionRecorder recorder = runSuite(instrumentationTestSuiteBuilder);
+
+ assertEquals(1, recorder.testsSeen.size());
+ assertTrue(recorder.saw("InstrumentationTest.testInstrumentation"));
+ }
+
+ public void testShouldOnlyIncludeIntrumentationTests() throws Exception {
+ TestSuite testSuite = new OuterTest()
+ .buildTestsUnderHereWith(instrumentationTestSuiteBuilder);
+ List<String> testCaseNames = getTestCaseNames(testSuite);
+ assertEquals(1, testCaseNames.size());
+ assertEquals("testInstrumentation", testCaseNames.get(0));
+ }
+
+ private static String packageFor(Class clazz) {
+ String className = clazz.getName();
+ return className.substring(0, className.lastIndexOf('.'));
+ }
+
+ private SuiteExecutionRecorder runSuite(TestSuiteBuilder builder) {
+ TestSuite suite = builder.build();
+ SuiteExecutionRecorder recorder = new SuiteExecutionRecorder();
+ TestResult result = new TestResult();
+ result.addListener(recorder);
+ suite.run(result);
+ return recorder;
+ }
+
+ private class SuiteExecutionRecorder implements TestListener {
+
+ private Set<String> failures = new HashSet<String>();
+ private Set<String> errors = new HashSet<String>();
+ private Set<String> testsSeen = new HashSet<String>();
+
+ public void addError(Test test, Throwable t) {
+ errors.add(testName(test));
+ }
+
+ public void addFailure(Test test, AssertionFailedError t) {
+ failures.add(testName(test));
+ }
+
+ public void endTest(Test test) {
+ }
+
+ public void startTest(Test test) {
+ testsSeen.add(testName(test));
+ }
+
+ public boolean saw(String testName) {
+ return testsSeen.contains(testName);
+ }
+
+ public boolean failed(String testName) {
+ return failures.contains(testName);
+ }
+
+ public boolean errored(String testName) {
+ return errors.contains(testName);
+ }
+
+ public boolean passed(String testName) {
+ return saw(testName) && !failed(testName) && !errored(testName);
+ }
+
+ private String testName(Test test) {
+ TestCase testCase = (TestCase) test;
+ return testCase.getClass().getSimpleName() + "." + testCase.getName();
+ }
+ }
+}