| package org.junit.tests.junit3compatibility; |
| |
| import java.io.ByteArrayOutputStream; |
| import java.io.OutputStream; |
| import java.io.PrintStream; |
| |
| import junit.framework.JUnit4TestAdapter; |
| import junit.framework.TestCase; |
| import junit.framework.TestResult; |
| import junit.framework.TestSuite; |
| import junit.textui.ResultPrinter; |
| import junit.textui.TestRunner; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| public class ForwardCompatibilityPrintingTest extends TestCase { |
| 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 void testError() { |
| ByteArrayOutputStream output = new ByteArrayOutputStream(); |
| TestRunner runner = new TestRunner(new TestResultPrinter( |
| new PrintStream(output))); |
| |
| 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()); |
| } |
| |
| public static class ATest { |
| @Test |
| public void error() { |
| Assert.fail(); |
| } |
| } |
| |
| public void testErrorAdapted() { |
| ByteArrayOutputStream output = new ByteArrayOutputStream(); |
| TestRunner runner = new TestRunner(new TestResultPrinter( |
| new PrintStream(output))); |
| |
| 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); |
| runner.doRun(new JUnit4TestAdapter(ATest.class)); |
| 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(); |
| } |
| } |