1
2 package junit.tests.runner;
3
4 import java.io.ByteArrayOutputStream;
5 import java.io.OutputStream;
6 import java.io.PrintStream;
7
8 import junit.framework.AssertionFailedError;
9 import junit.framework.TestCase;
10 import junit.framework.TestResult;
11 import junit.framework.TestSuite;
12 import junit.textui.ResultPrinter;
13 import junit.textui.TestRunner;
14
|
15 public class TextFeedbackTest extends TestCase {
|
16 OutputStream output;
17 TestRunner runner;
18
|
19 class TestResultPrinter extends ResultPrinter {
20 TestResultPrinter(PrintStream writer) {
21 super(writer);
22 }
|
23
24 /* Spoof printing time so the tests are deterministic
25 */
26 protected String elapsedTimeAsString(long runTime) {
|
27 return "0";
|
28 }
29 }
30
31 public static void main(String[] args) {
|
32 > TestRunner.run(TextFeedbackTest.class);
33 > }
|
34
35 public void setUp() {
|
36 output= new ByteArrayOutputStream();
37 runner= new TestRunner(new TestResultPrinter(new PrintStream(output)));
38 }
|
39
40 public void testEmptySuite() {
|
41 String expected= expected(new String[]{"", "Time: 0", "", "OK (0 tests)", ""});
42 runner.doRun(new TestSuite());
43 assertEquals(expected.toString(), output.toString());
44 }
|
45
46
47 public void testOneTest() {
|
48 String expected= expected(new String[]{".", "Time: 0", "", "OK (1 test)", ""});
49 TestSuite suite = new TestSuite();
50 suite.addTest(new TestCase() { public void runTest() {}});
51 runner.doRun(suite);
52 assertEquals(expected.toString(), output.toString());
53 }
|
54
55 public void testTwoTests() {
|
56 String expected= expected(new String[]{"..", "Time: 0", "", "OK (2 tests)", ""});
57 TestSuite suite = new TestSuite();
58 suite.addTest(new TestCase() { public void runTest() {}});
59 suite.addTest(new TestCase() { public void runTest() {}});
60 runner.doRun(suite);
61 assertEquals(expected.toString(), output.toString());
62 }
|
63
64 public void testFailure() {
|
65 String expected= expected(new String[]{".F", "Time: 0", "Failures here", "", "FAILURES!!!", "Tests run: 1, Failures: 1, Errors: 0", ""});
66 ResultPrinter printer= new TestResultPrinter(new PrintStream(output)) {
67 public void printFailures(TestResult result) {
68 getWriter().println("Failures here");
69 }
|
70 };
|
71 runner.setPrinter(printer);
72 TestSuite suite = new TestSuite();
73 suite.addTest(new TestCase() { public void runTest() {throw new AssertionFailedError();}});
74 runner.doRun(suite);
75 assertEquals(expected.toString(), output.toString());
76 }
|
77
78 public void testError() {
|
79 String expected= expected(new String[]{".E", "Time: 0", "Errors here", "", "FAILURES!!!", "Tests run: 1, Failures: 0, Errors: 1", ""});
80 ResultPrinter printer= new TestResultPrinter(new PrintStream(output)) {
81 public void printErrors(TestResult result) {
82 getWriter().println("Errors here");
83 }
|
84 };
|
85 runner.setPrinter(printer);
86 TestSuite suite = new TestSuite();
87 suite.addTest(new TestCase() { public void runTest() throws Exception {throw new Exception();}});
88 runner.doRun(suite);
89 assertEquals(expected.toString(), output.toString());
90 }
|
91
92 private String expected(String[] lines) {
|
93 OutputStream expected= new ByteArrayOutputStream();
94 PrintStream expectedWriter= new PrintStream(expected);
95 for (int i= 0; i < lines.length; i++)
96 expectedWriter.println(lines[i]);
97 return expected.toString();
|
98 }
99
100 }
|