junit.textui.ResultPrinter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dragome-js-jre Show documentation
Show all versions of dragome-js-jre Show documentation
Dragome SDK module: js-jre
The newest version!
package junit.textui;
import java.io.PrintStream;
import java.text.NumberFormat;
import java.util.Enumeration;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestFailure;
import junit.framework.TestListener;
import junit.framework.TestResult;
import junit.runner.BaseTestRunner;
public class ResultPrinter implements TestListener
{
PrintStream fWriter;
int fColumn= 0;
public ResultPrinter(PrintStream writer)
{
fWriter= writer;
}
/* API for use by textui.TestRunner */
synchronized void print(TestResult result, long runTime)
{
printHeader(runTime);
printErrors(result);
printFailures(result);
printFooter(result);
}
void printWaitPrompt()
{
getWriter().println();
getWriter().println(" to continue");
}
/* Internal methods */
protected void printHeader(long runTime)
{
getWriter().println();
getWriter().println("Time: " + elapsedTimeAsString(runTime));
}
protected void printErrors(TestResult result)
{
printDefects(result.errors(), result.errorCount(), "error");
}
protected void printFailures(TestResult result)
{
printDefects(result.failures(), result.failureCount(), "failure");
}
protected void printDefects(Enumeration booBoos, int count, String type)
{
if (count == 0)
return;
if (count == 1)
{
getWriter().println("There was " + count + " " + type + ":");
}
else
{
getWriter().println("There were " + count + " " + type + "s:");
}
for (int i= 1; booBoos.hasMoreElements(); i++)
{
printDefect(booBoos.nextElement(), i);
}
}
public void printDefect(TestFailure booBoo, int count)
{ // only public for testing purposes
printDefectHeader(booBoo, count);
printDefectTrace(booBoo);
}
protected void printDefectHeader(TestFailure booBoo, int count)
{
// I feel like making this a println, then adding a line giving the throwable a chance to print something
// before we get to the stack trace.
getWriter().print(count + ") " + booBoo.failedTest());
}
protected void printDefectTrace(TestFailure booBoo)
{
getWriter().print(BaseTestRunner.getFilteredTrace(booBoo.trace()));
}
protected void printFooter(TestResult result)
{
if (result.wasSuccessful())
{
getWriter().println();
getWriter().print("OK");
getWriter().println(" (" + result.runCount() + " test" + (result.runCount() == 1 ? "" : "s") + ")");
}
else
{
getWriter().println();
getWriter().println("FAILURES!!!");
getWriter().println("Tests run: " + result.runCount() + ", Failures: " + result.failureCount() + ", Errors: " + result.errorCount());
}
getWriter().println();
}
/**
* Returns the formatted string of the elapsed time.
* Duplicated from BaseTestRunner. Fix it.
*/
protected String elapsedTimeAsString(long runTime)
{
return NumberFormat.getInstance().format((double) runTime / 1000);
}
public PrintStream getWriter()
{
return fWriter;
}
/**
* @see junit.framework.TestListener#addError(Test, Throwable)
*/
public void addError(Test test, Throwable t)
{
getWriter().print("E");
}
/**
* @see junit.framework.TestListener#addFailure(Test, AssertionFailedError)
*/
public void addFailure(Test test, AssertionFailedError t)
{
getWriter().print("F");
}
/**
* @see junit.framework.TestListener#endTest(Test)
*/
public void endTest(Test test)
{
}
/**
* @see junit.framework.TestListener#startTest(Test)
*/
public void startTest(Test test)
{
getWriter().print(".");
if (fColumn++ >= 40)
{
getWriter().println();
fColumn= 0;
}
}
}