All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fitnesse.reporting.TestTextFormatter Maven / Gradle / Ivy

There is a newer version: 20241026
Show newest version
package fitnesse.reporting;

import java.io.Closeable;
import java.io.IOException;
import java.text.SimpleDateFormat;

import fitnesse.testsystems.TestPage;
import fitnesse.util.TimeMeasurement;
import fitnesse.http.ChunkedResponse;
import fitnesse.testsystems.TestSummary;
import fitnesse.testsystems.TestSystem;

public class TestTextFormatter extends BaseFormatter implements Closeable {
  private ChunkedResponse response;
  private TimeMeasurement timeMeasurement;
  private TimeMeasurement totalTimeMeasurement;
  private int testCount = 0;
  private int failCount = 0;

  public TestTextFormatter(ChunkedResponse response) {
    this.response = response;
    this.totalTimeMeasurement = new TimeMeasurement().start();
  }

  @Override
  public void testSystemStarted(TestSystem testSystem) {
    writeData("\nStarting Test System: %s.\n", testSystem.getName());
  }

  @Override
  public void testStarted(TestPage page) {
    timeMeasurement = new TimeMeasurement().start();
  }

  @Override
  public void testOutputChunk(String output) {
  }

  @Override
  public void testComplete(TestPage page, TestSummary summary) {
    timeMeasurement.stop();
    updateCounters(summary);
    String timeString = new SimpleDateFormat("HH:mm:ss").format(timeMeasurement.startedAtDate());
    writeData("%s %s R:%-4d W:%-4d I:%-4d E:%-4d %s\t(%s)\t%.03f seconds\n",
      passFail(summary), timeString, summary.getRight(), summary.getWrong(), summary.getIgnores(), summary.getExceptions(), page.getName(), page.getFullPath(), timeMeasurement.elapsedSeconds());
  }

  private void writeData(String format, Object... args) {
    try {
      response.add(String.format(format, args));
    } catch (IOException e) {
      throw new FormatterException("Unable to write data, abort", e);
    }
  }

  private void updateCounters(TestSummary summary) {
    testCount++;
    if (summary.getWrong() > 0) {
      failCount++;
    }
    if (summary.getExceptions() > 0) {
      failCount++;
    }

  }
  private String passFail(TestSummary summary) {
    if (summary.getWrong() > 0){
      return "F";
    }
    if (summary.getExceptions() > 0) {
      return "X";
    }
    return ".";
  }

  @Override
  public void close() throws IOException {
    totalTimeMeasurement.stop();
    response.add(String.format("--------\n%d Tests,\t%d Failures\t%.03f seconds.\n", testCount, failCount, totalTimeMeasurement.elapsedSeconds()));
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy