|
2 | 2 |
|
3 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; |
4 | 4 | import lombok.extern.slf4j.Slf4j; |
| 5 | +import org.fugerit.java.core.io.helper.HelperIOException; |
| 6 | +import org.fugerit.java.core.xml.dom.DOMIO; |
5 | 7 | import org.fugerit.java.doc.base.config.DocConfig; |
6 | 8 | import org.fugerit.java.junit5.tag.check.model.ExecutedTest; |
7 | 9 | import org.fugerit.java.junit5.tag.check.model.ReportModel; |
8 | 10 | import org.fugerit.java.junit5.tag.check.model.TestStats; |
| 11 | +import org.w3c.dom.Document; |
| 12 | +import org.w3c.dom.Element; |
9 | 13 |
|
10 | 14 | import java.io.File; |
11 | 15 | import java.io.FileWriter; |
@@ -43,7 +47,7 @@ private void generateReport(Map<ExecutedTest, Set<String>> testTagMap) |
43 | 47 | case DocConfig.TYPE_JSON: |
44 | 48 | generateJsonReport(model); |
45 | 49 | break; |
46 | | - case "xml": |
| 50 | + case DocConfig.TYPE_XML: |
47 | 51 | generateXmlReport(testTagMap); |
48 | 52 | break; |
49 | 53 | case "html": |
@@ -288,26 +292,30 @@ private void generateJsonReport(ReportModel report) |
288 | 292 |
|
289 | 293 | private void generateXmlReport(Map<ExecutedTest, Set<String>> testTagMap) |
290 | 294 | throws IOException { |
291 | | - try (FileWriter writer = new FileWriter(outputFile)) { |
292 | | - writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); |
293 | | - writer.write("<executedTestTagReport>\n"); |
294 | | - |
295 | | - for (Map.Entry<ExecutedTest, Set<String>> entry : testTagMap.entrySet()) { |
296 | | - ExecutedTest test = entry.getKey(); |
297 | | - writer.write(" <test class=\"" + escapeXml(test.getClassName()) + "\" "); |
298 | | - writer.write("method=\"" + escapeXml(test.getMethodName()) + "\" "); |
299 | | - writer.write("time=\"" + test.getTime() + "\" "); |
300 | | - writer.write("skipped=\"" + test.isSkipped() + "\" "); |
301 | | - writer.write("failed=\"" + test.isFailed() + "\" "); |
302 | | - writer.write("error=\"" + test.isError() + "\">\n"); |
303 | | - for (String tag : entry.getValue()) { |
304 | | - writer.write(" <tag>" + escapeXml(tag) + "</tag>\n"); |
| 295 | + HelperIOException.apply( () -> { |
| 296 | + try (FileWriter writer = new FileWriter(outputFile)) { |
| 297 | + Document document = DOMIO.newSafeDocumentBuilderFactory().newDocumentBuilder().newDocument(); |
| 298 | + Element root = document.createElement("executedTestTagReport"); |
| 299 | + for (Map.Entry<ExecutedTest, Set<String>> entry : testTagMap.entrySet()) { |
| 300 | + ExecutedTest test = entry.getKey(); |
| 301 | + Element current = document.createElement("test"); |
| 302 | + current.setAttribute("class", test.getClassName()); |
| 303 | + current.setAttribute("method", test.getMethodName()); |
| 304 | + current.setAttribute("time", test.getTime().toString()); |
| 305 | + current.setAttribute("skipped", String.valueOf( test.isSkipped() ) ); |
| 306 | + current.setAttribute("failed", String.valueOf( test.isFailed() ) ); |
| 307 | + current.setAttribute("error", String.valueOf( test.isError() ) ); |
| 308 | + for (String tag : entry.getValue()) { |
| 309 | + Element tagElement = document.createElement( "tag" ); |
| 310 | + tagElement.appendChild( document.createTextNode(tag) ); |
| 311 | + current.appendChild(tagElement); |
| 312 | + } |
| 313 | + root.appendChild(current); |
305 | 314 | } |
306 | | - writer.write(" </test>\n"); |
| 315 | + writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); |
| 316 | + DOMIO.writeDOMIndent( root, writer ); |
307 | 317 | } |
308 | | - |
309 | | - writer.write("</executedTestTagReport>\n"); |
310 | | - } |
| 318 | + } ); |
311 | 319 | } |
312 | 320 |
|
313 | 321 | private String getStatusIcon(ExecutedTest test) { |
|
0 commit comments