// Copyright � 2002-2005 Canoo Engineering AG, Switzerland.
package com.canoo.webtest.reporting;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Iterator;
import com.canoo.webtest.boundary.PackageBoundary;
/**
* @author unknown
* @author Marc Guillemot
*/
public class PlainTextReporter implements IResultReporter {
public static String getBuildFailMessage(final RootStepResult result) {
final StringBuffer sb = new StringBuffer();
sb.append(PackageBoundary.versionMessage()).append("\nTest failed.");
if (result.isError()) {
sb.append("\nException raised: ");
sb.append(result.getException());
final ByteArrayOutputStream bs = new ByteArrayOutputStream();
result.getException().printStackTrace(new PrintStream(bs));
sb.append(bs.toString());
}
if (result.isFailure()) {
final StepResult failedStepResult = result.getFailingTaskResult();
sb.append("\nTest step ");
sb.append(result.getTaskName());
sb.append(" (").append(failedStepResult.getLocation()).append(") ");
sb.append(failedStepResult.getTaskDescription());
sb.append(" failed with message \"");
sb.append(result.getException().getMessage());
sb.append("\"");
}
return sb.toString();
}
public void generateReport(final RootStepResult result) throws IOException {
final File outputFile = new File(result.getConfig().getWebTestResultDir(), "WebTestReport.txt");
final PrintWriter out = new PrintWriter(new FileOutputStream(outputFile));
print(out, result);
out.close();
}
protected void print(final PrintWriter out, final RootStepResult result) {
out.println(
"Test step summary for specification: \""
+ result.getWebtestName() + "\"");
out.println(PackageBoundary.versionMessage());
int count = 1;
for (final Iterator i = result.getChildren().iterator(); i.hasNext();)
{
final StepResult stepResult = (StepResult) i.next();
out.println("\t" + count++ + ". " + stepResult.getTaskName());
if (stepResult.isCompleted()) {
out.println("\t\t" + "Duration: " + stepResult.getDuration() + " ms");
} else {
out.println("\t\t==> Step was not completed!");
}
out.println();
}
if (!result.isSuccessful()) {
out.println(getBuildFailMessage(result));
}
}
}