blob: f4621bf2887da29ac9c34eb206b3b68cdb66237f [file] [log] [blame]
package org.testng.reporters;
import org.testng.ITestContext;
import org.testng.ITestNGMethod;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import org.testng.internal.Utils;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.util.List;
/**
* A simple reporter that collects the results and does nothing else.
*
* @author <a href="mailto:cedric@beust.com">Cedric Beust</a>
*/
public class TextReporter extends TestListenerAdapter {
private int m_verbose = 0;
private String m_testName = null;
public TextReporter(String testName, int verbose) {
m_testName = testName;
m_verbose = verbose;
}
@Override
public void onFinish(ITestContext context) {
if (m_verbose >= 2) {
logResults();
}
}
private ITestNGMethod[] resultsToMethods(List<ITestResult> results) {
ITestNGMethod[] result = new ITestNGMethod[results.size()];
int i = 0;
for (ITestResult tr : results) {
result[i++] = tr.getMethod();
}
return result;
}
private void logResults() {
//
// Log HTML
//
// m_htmlLogger.generateLog();
//
// Log Text
//
for(Object o : getPassedTests()) {
ITestResult tr = (ITestResult) o;
logResult("PASSED", tr.getName(), tr.getMethod().getDescription());
}
for(Object o : getFailedTests()) {
ITestResult tr = (ITestResult) o;
Throwable ex = tr.getThrowable();
logResult("FAILED", tr.getName(), tr.getMethod().getDescription());
if (ex != null) {
if (m_verbose >= 2) {
logResult("", Utils.stackTrace(ex, false)[0], null);
}
}
}
for(Object o : getSkippedTests()) {
ITestResult tr = (ITestResult) o;
logResult("SKIPPED", tr.getName(), tr.getMethod().getDescription());
}
ITestNGMethod[] ft = resultsToMethods(getFailedTests());
String stats = "\n===============================================\n" + " " + m_testName
+ "\n" + " Tests run: " + Utils.calculateInvokedMethodCount(getAllTestMethods())
+ ", Failures: " + Utils.calculateInvokedMethodCount(ft)
+ ", Skips: "
+ Utils.calculateInvokedMethodCount(resultsToMethods(getSkippedTests()))
+ "\n===============================================\n";
logResult("", stats, null);
}
private String getName() {
return m_testName;
}
private void logResult(String status, String name, String description) {
if (! "".equals(status)) {
System.out.print(status + ": ");
}
System.out.println(name);
if (! Utils.isStringEmpty(description)) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < status.length() + 2; i++) {
sb.append(" ");
}
sb.append(description);
System.out.println(sb.toString());
}
}
private void logResult(Throwable s) {
System.out.println(s.getMessage());
}
public void ppp(String s) {
System.out.println("[TextReporter " + getName() + "] " + s);
}
}