Source of TextFeedbackTest.java


  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: }