Package junit.tests.runner

Source Code of junit.tests.runner.TextFeedbackTest

package junit.tests.runner;

import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;

import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import junit.framework.TestResult;
import junit.framework.TestSuite;
import junit.textui.ResultPrinter;
import junit.textui.TestRunner;

public class TextFeedbackTest extends TestCase {
  OutputStream output;
  TestRunner runner;
 
  static class TestResultPrinter extends ResultPrinter {
    TestResultPrinter(PrintStream writer) {
      super(writer);
    }
   
    /* Spoof printing time so the tests are deterministic
     */
    @Override
    protected String elapsedTimeAsString(long runTime) {
      return "0";
    }
  }
 
  public static void main(String[] args) {
    TestRunner.run(TextFeedbackTest.class);
  }
 
  @Override
  public void setUp() {
    output= new ByteArrayOutputStream();
    runner= new TestRunner(new TestResultPrinter(new PrintStream(output)));
  }
 
  public void testEmptySuite() {
    String expected= expected(new String[]{"", "Time: 0", "", "OK (0 tests)", ""});
    runner.doRun(new TestSuite());
    assertEquals(expected, output.toString());
  }

 
  public void testOneTest() {
    String expected= expected(new String[]{".", "Time: 0", "", "OK (1 test)", ""});
    TestSuite suite = new TestSuite();
    suite.addTest(new TestCase() { @Override
    public void runTest() {}});
    runner.doRun(suite);
    assertEquals(expected, output.toString());
  }
 
  public void testTwoTests() {
    String expected= expected(new String[]{"..", "Time: 0", "", "OK (2 tests)", ""});
    TestSuite suite = new TestSuite();
    suite.addTest(new TestCase() { @Override
    public void runTest() {}});
    suite.addTest(new TestCase() { @Override
    public void runTest() {}});
    runner.doRun(suite);
    assertEquals(expected, output.toString());
  }

  public void testFailure() {
    String expected= expected(new String[]{".F", "Time: 0", "Failures here", "", "FAILURES!!!", "Tests run: 1,  Failures: 1,  Errors: 0", ""});
    ResultPrinter printer= new TestResultPrinter(new PrintStream(output)) {
      @Override
      public void printFailures(TestResult result) {
        getWriter().println("Failures here");
      }
    };
    runner.setPrinter(printer);
    TestSuite suite = new TestSuite();
    suite.addTest(new TestCase() { @Override
    public void runTest() {throw new AssertionFailedError();}});
    runner.doRun(suite);
    assertEquals(expected, output.toString());
  }
 
  public void testError() {
    String expected= expected(new String[]{".E", "Time: 0", "Errors here", "", "FAILURES!!!", "Tests run: 1,  Failures: 0,  Errors: 1", ""});
    ResultPrinter printer= new TestResultPrinter(new PrintStream(output)) {
      @Override
      public void printErrors(TestResult result) {
        getWriter().println("Errors here");
      }
    };
    runner.setPrinter(printer);
    TestSuite suite = new TestSuite();
    suite.addTest(new TestCase() { @Override
    public void runTest() throws Exception {throw new Exception();}});
    runner.doRun(suite);
    assertEquals(expected, output.toString());
  }
 
  private String expected(String[] lines) {
    OutputStream expected= new ByteArrayOutputStream();
    PrintStream expectedWriter= new PrintStream(expected);
    for (int i= 0; i < lines.length; i++)
      expectedWriter.println(lines[i]);
    return expected.toString();
  }

}
TOP

Related Classes of junit.tests.runner.TextFeedbackTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.