1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.surefire.extensions;
20
21 import java.io.File;
22 import java.util.Deque;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.apache.maven.plugin.surefire.extensions.junit5.JUnit5Xml30StatelessReporter;
27 import org.apache.maven.plugin.surefire.report.StatelessXmlReporter;
28 import org.apache.maven.plugin.surefire.report.TestSetStats;
29 import org.apache.maven.plugin.surefire.report.WrappedReportEntry;
30 import org.apache.maven.surefire.extensions.StatelessReportEventListener;
31 import org.junit.Test;
32
33 import static org.assertj.core.api.Assertions.assertThat;
34 import static org.powermock.reflect.Whitebox.getInternalState;
35
36
37
38
39 public class StatelessReporterTest {
40 @Test
41 public void shouldCloneXmlReporter() {
42 SurefireStatelessReporter extension = new SurefireStatelessReporter();
43 extension.setDisable(true);
44 extension.setVersion("V1");
45 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
46
47 Object clone = extension.clone(classLoader);
48 assertThat(clone).isNotSameAs(extension);
49 assertThat(clone).isInstanceOf(SurefireStatelessReporter.class);
50 assertThat(clone.toString()).isEqualTo("SurefireStatelessReporter{version=V1, disable=true}");
51 assertThat(((SurefireStatelessReporter) clone).isDisable()).isTrue();
52 assertThat(((SurefireStatelessReporter) clone).getVersion()).isEqualTo("V1");
53 }
54
55 @Test
56 public void shouldAssertToStringXmlReporter() {
57 SurefireStatelessReporter extension = new SurefireStatelessReporter();
58 assertThat(extension.toString()).isEqualTo("SurefireStatelessReporter{version=3.0, disable=false}");
59 }
60
61 @Test
62 public void shouldCreateConsoleListener() {
63 File target = new File(System.getProperty("user.dir"), "target");
64 File reportsDirectory = new File(target, "surefire-reports");
65 String reportNameSuffix = "suffix";
66 String schema = "https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd";
67 Map<String, Deque<WrappedReportEntry>> testClassMethodRunHistory = new HashMap<>();
68 DefaultStatelessReportMojoConfiguration config = new DefaultStatelessReportMojoConfiguration(
69 reportsDirectory, reportNameSuffix, true, 5, schema, testClassMethodRunHistory);
70 SurefireStatelessReporter extension = new SurefireStatelessReporter();
71
72 assertThat(extension.getVersion()).isEqualTo("3.0");
73 extension.setVersion("V3");
74 assertThat(extension.getVersion()).isEqualTo("V3");
75
76 assertThat(extension.isDisable()).isFalse();
77 extension.setDisable(true);
78 assertThat(extension.isDisable()).isTrue();
79
80 StatelessReportEventListener<WrappedReportEntry, TestSetStats> listener = extension.createListener(config);
81 assertThat(listener).isInstanceOf(StatelessXmlReporter.class);
82 assertThat((File) getInternalState(listener, "reportsDirectory")).isSameAs(reportsDirectory);
83 assertThat((String) getInternalState(listener, "reportNameSuffix")).isSameAs(reportNameSuffix);
84 assertThat((boolean) getInternalState(listener, "trimStackTrace")).isEqualTo(true);
85 assertThat((Integer) getInternalState(listener, "rerunFailingTestsCount"))
86 .isEqualTo(5);
87 assertThat((String) getInternalState(listener, "xsdSchemaLocation")).isSameAs(schema);
88 assertThat((String) getInternalState(listener, "xsdVersion")).isEqualTo("V3");
89 assertThat((Map<?, ?>) getInternalState(listener, "testClassMethodRunHistoryMap"))
90 .isSameAs(testClassMethodRunHistory);
91 assertThat((boolean) getInternalState(listener, "phrasedFileName")).isEqualTo(false);
92 assertThat((boolean) getInternalState(listener, "phrasedSuiteName")).isEqualTo(false);
93 assertThat((boolean) getInternalState(listener, "phrasedClassName")).isEqualTo(false);
94 assertThat((boolean) getInternalState(listener, "phrasedMethodName")).isEqualTo(false);
95 }
96
97 @Test
98 public void shouldCloneJUnit5XmlReporter() {
99 JUnit5Xml30StatelessReporter extension = new JUnit5Xml30StatelessReporter();
100 extension.setDisable(true);
101 extension.setVersion("V1");
102 extension.setUsePhrasedFileName(true);
103 extension.setUsePhrasedTestSuiteClassName(true);
104 extension.setUsePhrasedTestCaseClassName(true);
105 extension.setUsePhrasedTestCaseMethodName(true);
106 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
107
108 Object clone = extension.clone(classLoader);
109 assertThat(clone).isNotSameAs(extension);
110 assertThat(clone).isInstanceOf(JUnit5Xml30StatelessReporter.class);
111 assertThat(clone.toString())
112 .isEqualTo("JUnit5Xml30StatelessReporter{version=V1, disable=true, usePhrasedFileName=true, "
113 + "usePhrasedTestSuiteClassName=true, usePhrasedTestCaseClassName=true, "
114 + "usePhrasedTestCaseMethodName=true}");
115 assertThat(((JUnit5Xml30StatelessReporter) clone).isDisable()).isTrue();
116 assertThat(((JUnit5Xml30StatelessReporter) clone).getVersion()).isEqualTo("V1");
117 assertThat(((JUnit5Xml30StatelessReporter) clone).getUsePhrasedFileName())
118 .isTrue();
119 assertThat(((JUnit5Xml30StatelessReporter) clone).getUsePhrasedTestCaseClassName())
120 .isTrue();
121 assertThat(((JUnit5Xml30StatelessReporter) clone).getUsePhrasedTestCaseMethodName())
122 .isTrue();
123 assertThat(((JUnit5Xml30StatelessReporter) clone).getUsePhrasedTestSuiteClassName())
124 .isTrue();
125 }
126
127 @Test
128 public void shouldAssertToStringJUnit5ConsoleReporter() {
129 JUnit5Xml30StatelessReporter extension = new JUnit5Xml30StatelessReporter();
130 assertThat(extension.toString())
131 .isEqualTo("JUnit5Xml30StatelessReporter{version=3.0, disable=false, "
132 + "usePhrasedFileName=false, usePhrasedTestSuiteClassName=false, "
133 + "usePhrasedTestCaseClassName=false, usePhrasedTestCaseMethodName=false}");
134 }
135
136 @Test
137 public void shouldCreateJUnit5ConsoleListener() {
138 File target = new File(System.getProperty("user.dir"), "target");
139 File reportsDirectory = new File(target, "surefire-reports");
140 String reportNameSuffix = "suffix";
141 String schema = "https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd";
142 Map<String, Deque<WrappedReportEntry>> testClassMethodRunHistory = new HashMap<>();
143 DefaultStatelessReportMojoConfiguration config = new DefaultStatelessReportMojoConfiguration(
144 reportsDirectory, reportNameSuffix, true, 5, schema, testClassMethodRunHistory);
145 JUnit5Xml30StatelessReporter extension = new JUnit5Xml30StatelessReporter();
146
147 assertThat(extension.getVersion()).isEqualTo("3.0");
148 extension.setVersion("V3");
149 assertThat(extension.getVersion()).isEqualTo("V3");
150
151 assertThat(extension.isDisable()).isFalse();
152 extension.setDisable(true);
153 assertThat(extension.isDisable()).isTrue();
154
155 assertThat(extension.getUsePhrasedFileName()).isFalse();
156 extension.setUsePhrasedFileName(true);
157 assertThat(extension.getUsePhrasedFileName()).isTrue();
158
159 assertThat(extension.getUsePhrasedTestSuiteClassName()).isFalse();
160 extension.setUsePhrasedTestSuiteClassName(true);
161 assertThat(extension.getUsePhrasedTestSuiteClassName()).isTrue();
162
163 assertThat(extension.getUsePhrasedTestCaseClassName()).isFalse();
164 extension.setUsePhrasedTestCaseClassName(true);
165 assertThat(extension.getUsePhrasedTestSuiteClassName()).isTrue();
166
167 assertThat(extension.getUsePhrasedTestCaseMethodName()).isFalse();
168 extension.setUsePhrasedTestCaseMethodName(true);
169 assertThat(extension.getUsePhrasedTestCaseMethodName()).isTrue();
170
171 StatelessReportEventListener<WrappedReportEntry, TestSetStats> listener = extension.createListener(config);
172 assertThat(listener).isInstanceOf(StatelessXmlReporter.class);
173 assertThat((File) getInternalState(listener, "reportsDirectory")).isSameAs(reportsDirectory);
174 assertThat((String) getInternalState(listener, "reportNameSuffix")).isSameAs(reportNameSuffix);
175 assertThat((boolean) getInternalState(listener, "trimStackTrace")).isEqualTo(true);
176 assertThat((Integer) getInternalState(listener, "rerunFailingTestsCount"))
177 .isEqualTo(5);
178 assertThat((String) getInternalState(listener, "xsdSchemaLocation")).isSameAs(schema);
179 assertThat((String) getInternalState(listener, "xsdVersion")).isEqualTo("V3");
180 assertThat((Map<?, ?>) getInternalState(listener, "testClassMethodRunHistoryMap"))
181 .isSameAs(testClassMethodRunHistory);
182 assertThat((boolean) getInternalState(listener, "phrasedFileName")).isEqualTo(true);
183 assertThat((boolean) getInternalState(listener, "phrasedSuiteName")).isEqualTo(true);
184 assertThat((boolean) getInternalState(listener, "phrasedClassName")).isEqualTo(true);
185 assertThat((boolean) getInternalState(listener, "phrasedMethodName")).isEqualTo(true);
186 }
187 }