Home | History | Annotate | Download | only in test
      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 
     43     public TestPrinter(String tag, boolean onlyFailures) {
     44         mTag = tag;
     45         mOnlyFailures = onlyFailures;
     46     }
     47 
     48     public void started(String className) {
     49         if (!mOnlyFailures) {
     50             Log.i(mTag, "started: " + className);
     51         }
     52     }
     53 
     54     public void finished(String className) {
     55         if (!mOnlyFailures) {
     56             Log.i(mTag, "finished: " + className);
     57         }
     58     }
     59 
     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 
     75     public void passed(String className) {
     76         if (!mOnlyFailures) {
     77             Log.i(mTag, "passed: " + className);
     78         }
     79     }
     80 
     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 
     88     private void failed(Test test, Throwable t) {
     89         mFailedTests.add(test.toString());
     90         failed(test.toString(), t);
     91     }
     92 
     93     public void addError(Test test, Throwable t) {
     94         failed(test, t);
     95     }
     96 
     97     public void addFailure(Test test, junit.framework.AssertionFailedError t) {
     98         failed(test, t);
     99     }
    100 
    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 
    109     public void startTest(Test test) {
    110         started(test.toString());
    111     }
    112 }
    113