|
1 package org.junit.internal; |
|
2 |
|
3 import java.io.PrintStream; |
|
4 import java.text.NumberFormat; |
|
5 import java.util.List; |
|
6 |
|
7 import org.junit.runner.Description; |
|
8 import org.junit.runner.Result; |
|
9 import org.junit.runner.notification.Failure; |
|
10 import org.junit.runner.notification.RunListener; |
|
11 |
|
12 public class TextListener extends RunListener { |
|
13 |
|
14 private final PrintStream fWriter; |
|
15 |
|
16 public TextListener(JUnitSystem system) { |
|
17 this(system.out()); |
|
18 } |
|
19 |
|
20 public TextListener(PrintStream writer) { |
|
21 this.fWriter= writer; |
|
22 } |
|
23 |
|
24 @Override |
|
25 public void testRunFinished(Result result) { |
|
26 printHeader(result.getRunTime()); |
|
27 printFailures(result); |
|
28 printFooter(result); |
|
29 } |
|
30 |
|
31 @Override |
|
32 public void testStarted(Description description) { |
|
33 fWriter.append('.'); |
|
34 } |
|
35 |
|
36 @Override |
|
37 public void testFailure(Failure failure) { |
|
38 fWriter.append('E'); |
|
39 } |
|
40 |
|
41 @Override |
|
42 public void testIgnored(Description description) { |
|
43 fWriter.append('I'); |
|
44 } |
|
45 |
|
46 /* |
|
47 * Internal methods |
|
48 */ |
|
49 |
|
50 private PrintStream getWriter() { |
|
51 return fWriter; |
|
52 } |
|
53 |
|
54 protected void printHeader(long runTime) { |
|
55 getWriter().println(); |
|
56 getWriter().println("Time: " + elapsedTimeAsString(runTime)); |
|
57 } |
|
58 |
|
59 protected void printFailures(Result result) { |
|
60 List<Failure> failures= result.getFailures(); |
|
61 if (failures.size() == 0) |
|
62 return; |
|
63 if (failures.size() == 1) |
|
64 getWriter().println("There was " + failures.size() + " failure:"); |
|
65 else |
|
66 getWriter().println("There were " + failures.size() + " failures:"); |
|
67 int i= 1; |
|
68 for (Failure each : failures) |
|
69 printFailure(each, "" + i++); |
|
70 } |
|
71 |
|
72 protected void printFailure(Failure each, String prefix) { |
|
73 getWriter().println(prefix + ") " + each.getTestHeader()); |
|
74 getWriter().print(each.getTrace()); |
|
75 } |
|
76 |
|
77 protected void printFooter(Result result) { |
|
78 if (result.wasSuccessful()) { |
|
79 getWriter().println(); |
|
80 getWriter().print("OK"); |
|
81 getWriter().println(" (" + result.getRunCount() + " test" + (result.getRunCount() == 1 ? "" : "s") + ")"); |
|
82 |
|
83 } else { |
|
84 getWriter().println(); |
|
85 getWriter().println("FAILURES!!!"); |
|
86 getWriter().println("Tests run: " + result.getRunCount() + ", Failures: " + result.getFailureCount()); |
|
87 } |
|
88 getWriter().println(); |
|
89 } |
|
90 |
|
91 /** |
|
92 * Returns the formatted string of the elapsed time. Duplicated from |
|
93 * BaseTestRunner. Fix it. |
|
94 */ |
|
95 protected String elapsedTimeAsString(long runTime) { |
|
96 return NumberFormat.getInstance().format((double) runTime / 1000); |
|
97 } |
|
98 } |