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