org.testng.reporters.jq.SuitePanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testng Show documentation
Show all versions of testng Show documentation
Testing framework for Java
package org.testng.reporters.jq;
import org.testng.ISuite;
import org.testng.ITestResult;
import org.testng.internal.Utils;
import org.testng.reporters.XMLStringBuffer;
import org.testng.util.Strings;
import java.util.List;
public class SuitePanel extends BasePanel {
private static final String PASSED = "passed";
private static final String SKIPPED = "skipped";
private static final String FAILED = "failed";
public SuitePanel(Model model) {
super(model);
}
@Override
public void generate(XMLStringBuffer xsb) {
for (ISuite suite : getSuites()) {
generateSuitePanel(suite, xsb);
}
}
private void generateSuitePanel(ISuite suite, XMLStringBuffer xsb) {
String divName = suiteToTag(suite);
xsb.push(D, C, "panel " + divName, "panel-name", "suite-" + divName);
String[] statuses = new String[] { FAILED, SKIPPED, PASSED };
ResultsByClass[] results = new ResultsByClass[] {
getModel().getFailedResultsByClass(suite),
getModel().getSkippedResultsByClass(suite),
getModel().getPassedResultsByClass(suite),
};
for (int i = 0; i < results.length; i++) {
ResultsByClass byClass = results[i];
for (Class> c : byClass.getClasses()) {
generateClassPanel(c, byClass.getResults(c), xsb, statuses[i], suite);
}
}
xsb.pop(D);
}
private void generateClassPanel(Class c, List results, XMLStringBuffer xsb,
String status, ISuite suite) {
xsb.push(D, C, "suite-" + suiteToTag(suite) + "-class-" + status);
xsb.push(D, C, "main-panel-header rounded-window-top");
// Passed/failed icon
xsb.addEmptyElement("img", "src", Model.getImage(status));
xsb.addOptional(S, c.getName(), C, "class-name");
xsb.pop(D);
xsb.push(D, C, "main-panel-content rounded-window-bottom");
for (ITestResult tr : results) {
generateMethod(tr, xsb);
}
xsb.pop(D);
xsb.pop(D);
}
private void generateMethod(ITestResult tr, XMLStringBuffer xsb) {
xsb.push(D, C, "method");
xsb.push(D, C, "method-content");
xsb.push("a", "name", Model.getTestResultName(tr));
xsb.pop("a");
xsb.addOptional(S, tr.getMethod().getMethodName(), C, "method-name");
// Parameters?
if (tr.getParameters().length > 0) {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Object p : tr.getParameters()) {
if (!first) sb.append(", ");
first = false;
sb.append(Utils.toString(p));
}
xsb.addOptional(S, "(" + sb.toString() + ")", C, "parameters");
}
// Exception?
if (tr.getStatus() != ITestResult.SUCCESS && tr.getThrowable() != null) {
StringBuilder stackTrace = new StringBuilder();
stackTrace.append(Utils.stackTrace(tr.getThrowable(), true)[0]);
xsb.addOptional(D, stackTrace.toString() + "\n",
C, "stack-trace");
}
// Description?
String description = tr.getMethod().getDescription();
if (! Strings.isNullOrEmpty(description)) {
xsb.push("em");
xsb.addString("(" + description + ")");
xsb.pop("em");
}
// long time = tr.getEndMillis() - tr.getStartMillis();
// xsb.addOptional(S, " " + Long.toString(time) + " ms", C, "method-time");
xsb.pop(D);
xsb.pop(D);
}
}