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.junit5;
20
21 import java.io.File;
22 import java.nio.charset.Charset;
23
24 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
25 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
26 import org.apache.maven.plugin.surefire.report.ConsoleReporter;
27 import org.apache.maven.plugin.surefire.report.FileReporter;
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.StatelessTestsetInfoConsoleReportEventListener;
31 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
32
33
34
35
36
37
38
39
40 public class JUnit5StatelessTestsetInfoReporter extends SurefireStatelessTestsetInfoReporter {
41
42
43
44
45
46 private boolean usePhrasedFileName;
47
48
49
50
51
52
53
54
55 private boolean usePhrasedClassNameInRunning;
56
57
58
59
60
61
62
63
64 private boolean usePhrasedClassNameInTestCaseSummary;
65
66 public boolean isUsePhrasedFileName() {
67 return usePhrasedFileName;
68 }
69
70 public void setUsePhrasedFileName(boolean usePhrasedFileName) {
71 this.usePhrasedFileName = usePhrasedFileName;
72 }
73
74 public boolean isUsePhrasedClassNameInRunning() {
75 return usePhrasedClassNameInRunning;
76 }
77
78 public void setUsePhrasedClassNameInRunning(boolean usePhrasedClassNameInRunning) {
79 this.usePhrasedClassNameInRunning = usePhrasedClassNameInRunning;
80 }
81
82 public boolean isUsePhrasedClassNameInTestCaseSummary() {
83 return usePhrasedClassNameInTestCaseSummary;
84 }
85
86 public void setUsePhrasedClassNameInTestCaseSummary(boolean usePhrasedClassNameInTestCaseSummary) {
87 this.usePhrasedClassNameInTestCaseSummary = usePhrasedClassNameInTestCaseSummary;
88 }
89
90 @Override
91 public StatelessTestsetInfoConsoleReportEventListener<WrappedReportEntry, TestSetStats> createListener(
92 ConsoleLogger logger) {
93 return new ConsoleReporter(logger, isUsePhrasedClassNameInRunning(), isUsePhrasedClassNameInTestCaseSummary());
94 }
95
96 @Override
97 public StatelessTestsetInfoFileReportEventListener<WrappedReportEntry, TestSetStats> createListener(
98 File reportsDirectory, String reportNameSuffix, Charset encoding) {
99 return new FileReporter(
100 reportsDirectory,
101 reportNameSuffix,
102 encoding,
103 isUsePhrasedFileName(),
104 isUsePhrasedClassNameInRunning(),
105 isUsePhrasedClassNameInTestCaseSummary());
106 }
107
108 @Override
109 public Object clone(ClassLoader target) {
110 try {
111 Object clone = super.clone(target);
112
113 Class<?> cls = clone.getClass();
114 cls.getMethod("setUsePhrasedFileName", boolean.class).invoke(clone, isUsePhrasedFileName());
115 cls.getMethod("setUsePhrasedClassNameInTestCaseSummary", boolean.class)
116 .invoke(clone, isUsePhrasedFileName());
117 cls.getMethod("setUsePhrasedClassNameInRunning", boolean.class).invoke(clone, isUsePhrasedFileName());
118
119 return clone;
120 } catch (ReflectiveOperationException e) {
121 throw new IllegalStateException(e.getLocalizedMessage());
122 }
123 }
124
125 @Override
126 public String toString() {
127 return "JUnit5StatelessTestsetInfoReporter{"
128 + "disable=" + isDisable()
129 + ", usePhrasedFileName=" + isUsePhrasedFileName()
130 + ", usePhrasedClassNameInRunning=" + isUsePhrasedClassNameInRunning()
131 + ", usePhrasedClassNameInTestCaseSummary=" + isUsePhrasedClassNameInTestCaseSummary()
132 + "}";
133 }
134 }