• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2006 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.test;
18 
19 import android.util.Log;
20 import junit.framework.Test;
21 import junit.framework.TestListener;
22 
23 import java.util.HashSet;
24 import java.util.List;
25 import java.util.Set;
26 
27 /**
28  * Prints the test progress to stdout. Android includes a default
29  * implementation and calls these methods to print out test progress; you
30  * probably will not need to create or extend this class or call its methods manually.
31  * See the full {@link android.test} package description for information about
32  * getting test results.
33  *
34  * {@hide} Not needed for 1.0 SDK.
35  */
36 public class TestPrinter implements TestRunner.Listener, TestListener {
37 
38     private String mTag;
39     private boolean mOnlyFailures;
40     private Set<String> mFailedTests = new HashSet<String>();
41 
42 
TestPrinter(String tag, boolean onlyFailures)43     public TestPrinter(String tag, boolean onlyFailures) {
44         mTag = tag;
45         mOnlyFailures = onlyFailures;
46     }
47 
started(String className)48     public void started(String className) {
49         if (!mOnlyFailures) {
50             Log.i(mTag, "started: " + className);
51         }
52     }
53 
finished(String className)54     public void finished(String className) {
55         if (!mOnlyFailures) {
56             Log.i(mTag, "finished: " + className);
57         }
58     }
59 
performance(String className, long itemTimeNS, int iterations, List<TestRunner.IntermediateTime> intermediates)60     public void performance(String className,
61             long itemTimeNS, int iterations,
62             List<TestRunner.IntermediateTime> intermediates) {
63         Log.i(mTag, "perf: " + className + " = " + itemTimeNS + "ns/op (done "
64                 + iterations + " times)");
65         if (intermediates != null && intermediates.size() > 0) {
66             int N = intermediates.size();
67             for (int i = 0; i < N; i++) {
68                 TestRunner.IntermediateTime time = intermediates.get(i);
69                 Log.i(mTag, "  intermediate: " + time.name + " = "
70                         + time.timeInNS + "ns");
71             }
72         }
73     }
74 
passed(String className)75     public void passed(String className) {
76         if (!mOnlyFailures) {
77             Log.i(mTag, "passed: " + className);
78         }
79     }
80 
failed(String className, Throwable exception)81     public void failed(String className, Throwable exception) {
82         Log.i(mTag, "failed: " + className);
83         Log.i(mTag, "----- begin exception -----");
84         Log.i(mTag, "", exception);
85         Log.i(mTag, "----- end exception -----");
86     }
87 
failed(Test test, Throwable t)88     private void failed(Test test, Throwable t) {
89         mFailedTests.add(test.toString());
90         failed(test.toString(), t);
91     }
92 
addError(Test test, Throwable t)93     public void addError(Test test, Throwable t) {
94         failed(test, t);
95     }
96 
addFailure(Test test, junit.framework.AssertionFailedError t)97     public void addFailure(Test test, junit.framework.AssertionFailedError t) {
98         failed(test, t);
99     }
100 
endTest(Test test)101     public void endTest(Test test) {
102         finished(test.toString());
103         if (!mFailedTests.contains(test.toString())) {
104             passed(test.toString());
105         }
106         mFailedTests.remove(test.toString());
107     }
108 
startTest(Test test)109     public void startTest(Test test) {
110         started(test.toString());
111     }
112 }
113