/** * A helper method that adds extra XML. * * <p>This includes a test name, time (in ms), message, and stack trace, when present. Example: * * <pre> * <testresult name="failed_test" time="200"> * <message>Reason for test failure</message> * <stacktrace>Stacktrace here</stacktrace> * </testresult> * </pre> * * @param testCase The test case summary containing one or more tests. * @param testEl The XML element object for the <test> tag, in which extra information tags will * be added. */ @VisibleForTesting static void addExtraXmlInfo(TestCaseSummary testCase, Element testEl) { Document doc = testEl.getOwnerDocument(); // Loop through the test case and extract test data. for (TestResultSummary testResult : testCase.getTestResults()) { // Extract the test name and time. String name = Strings.nullToEmpty(testResult.getTestName()); String time = Long.toString(testResult.getTime()); // Create the tag: <testresult name="..." time="..."> Element testResultEl = doc.createElement("testresult"); testResultEl.setAttribute("name", name); testResultEl.setAttribute("time", time); testEl.appendChild(testResultEl); // Create the tag: <message>(Error message here)</message> Element messageEl = doc.createElement("message"); String message = Strings.nullToEmpty(testResult.getMessage()); messageEl.appendChild(doc.createTextNode(message)); testResultEl.appendChild(messageEl); // Create the tag: <stacktrace>(Stacktrace here)</stacktrace> Element stacktraceEl = doc.createElement("stacktrace"); String stacktrace = Strings.nullToEmpty(testResult.getStacktrace()); stacktraceEl.appendChild(doc.createTextNode(stacktrace)); testResultEl.appendChild(stacktraceEl); } }