1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.surefire.report;
20
21 import java.io.File;
22 import java.io.UnsupportedEncodingException;
23 import java.net.URL;
24 import java.net.URLDecoder;
25 import java.util.ArrayList;
26 import java.util.List;
27 import java.util.Map;
28
29 import junit.framework.TestCase;
30 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
31
32 import static java.util.Collections.singletonList;
33
34
35
36
37 @SuppressWarnings("checkstyle:magicnumber")
38 public class SurefireReportParserTest extends TestCase {
39 public void testParseXMLReportFiles() throws Exception {
40 SurefireReportParser parser = new SurefireReportParser(singletonList(getTestDir()), new NullConsoleLogger());
41
42 List<ReportTestSuite> suites = parser.parseXMLReportFiles();
43
44 assertEquals(8, suites.size());
45
46 for (ReportTestSuite suite : suites) {
47 assertNotNull(suite.getName() + " was not correctly parsed", suite.getTestCases());
48 assertNotNull(suite.getName());
49 assertNotNull(suite.getPackageName());
50 }
51 }
52
53 private File getTestDir() throws UnsupportedEncodingException {
54 URL resource = getClass().getResource("/test-reports");
55
56 return new File(URLDecoder.decode(resource.getPath(), "UTF-8")).getAbsoluteFile();
57 }
58
59 public void testGetSummary() throws Exception {
60 ReportTestSuite tSuite1 = new ReportTestSuite()
61 .setNumberOfErrors(10)
62 .setNumberOfFailures(20)
63 .setNumberOfSkipped(2)
64 .setTimeElapsed(1.0f)
65 .setNumberOfTests(100);
66
67 ReportTestSuite tSuite2 = new ReportTestSuite()
68 .setNumberOfErrors(10)
69 .setNumberOfFailures(20)
70 .setNumberOfSkipped(2)
71 .setTimeElapsed(1.0f)
72 .setNumberOfTests(100);
73
74 List<ReportTestSuite> suites = new ArrayList<>();
75
76 suites.add(tSuite1);
77
78 suites.add(tSuite2);
79
80 SurefireReportParser parser = new SurefireReportParser(null, new NullConsoleLogger());
81
82 Map<String, Object> testMap = parser.getSummary(suites);
83
84 assertEquals(20, (int) testMap.get("totalErrors"));
85
86 assertEquals(40, (int) testMap.get("totalFailures"));
87
88 assertEquals(200, (int) testMap.get("totalTests"));
89
90 assertEquals(4, (int) testMap.get("totalSkipped"));
91
92 assertEquals(2.0f, (float) testMap.get("totalElapsedTime"));
93
94 assertEquals(0.68f, (float) testMap.get("totalPercentage"));
95 }
96
97 public void testGetSuitesGroupByPackage() {
98 ReportTestSuite tSuite1 = new ReportTestSuite();
99
100 ReportTestSuite tSuite2 = new ReportTestSuite();
101
102 ReportTestSuite tSuite3 = new ReportTestSuite();
103
104 tSuite1.setPackageName("Package1");
105
106 tSuite2.setPackageName("Package1");
107
108 tSuite3.setPackageName("Package2");
109
110 List<ReportTestSuite> suites = new ArrayList<>();
111
112 suites.add(tSuite1);
113
114 suites.add(tSuite2);
115
116 suites.add(tSuite3);
117
118 SurefireReportParser parser = new SurefireReportParser(null, new NullConsoleLogger());
119
120 Map<String, List<ReportTestSuite>> groupMap = parser.getSuitesGroupByPackage(suites);
121
122 assertEquals(2, groupMap.size());
123
124 assertEquals(tSuite1, groupMap.get("Package1").get(0));
125
126 assertEquals(tSuite2, groupMap.get("Package1").get(1));
127
128 assertEquals(tSuite3, groupMap.get("Package2").get(0));
129 }
130
131 public void testComputePercentage() throws Exception {
132 SurefireReportParser parser = new SurefireReportParser(null, new NullConsoleLogger());
133
134 assertEquals(0.7f, (float) parser.computePercentage(100, 20, 10, 0));
135 }
136
137 public void testGetFailureDetails() {
138 ReportTestSuite tSuite1 = new ReportTestSuite();
139
140 ReportTestSuite tSuite2 = new ReportTestSuite();
141
142 ReportTestCase tCase1 = new ReportTestCase();
143
144 ReportTestCase tCase2 = new ReportTestCase();
145
146 ReportTestCase tCase3 = new ReportTestCase();
147
148 tCase1.setFailure(null, IllegalArgumentException.class.getName());
149
150 tCase3.setFailure("index: 0, size: 0", IndexOutOfBoundsException.class.getName());
151
152 List<ReportTestCase> tCases = new ArrayList<>();
153
154 List<ReportTestCase> tCases2 = new ArrayList<>();
155
156 tCases.add(tCase1);
157
158 tCases.add(tCase2);
159
160 tCases2.add(tCase3);
161
162 tSuite1.setTestCases(tCases);
163
164 tSuite2.setTestCases(tCases2);
165
166 List<ReportTestSuite> suites = new ArrayList<>();
167
168 suites.add(tSuite1);
169
170 suites.add(tSuite2);
171
172 SurefireReportParser parser = new SurefireReportParser(null, new NullConsoleLogger());
173
174 List<ReportTestCase> failures = parser.getFailureDetails(suites);
175
176 assertEquals(2, failures.size());
177
178 assertEquals(tCase1, failures.get(0));
179
180 assertEquals(tCase3, failures.get(1));
181 }
182 }