This is an automated email from the ASF dual-hosted git repository. tibordigana pushed a commit to branch 1546-1222 in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit e41fc869ab0712beaeddcc65f645e1ff3ca6d1a3 Author: tibordigana <[email protected]> AuthorDate: Tue Apr 2 10:54:39 2019 +0200 [SUREFIRE-1546] JUnit 5 runner does not honor JUnit 5 display names --- .../surefire/booterclient/output/ForkClient.java | 3 +- .../booterclient/output/ForkedChannelDecoder.java | 17 +- .../maven/plugin/surefire/report/FileReporter.java | 2 +- .../surefire/report/StatelessXmlReporter.java | 6 +- .../plugin/surefire/report/WrappedReportEntry.java | 32 +++- .../booterclient/ForkingRunListenerTest.java | 4 +- .../booterclient/output/ForkClientTest.java | 100 ++++++++++- .../output/ForkedChannelDecoderTest.java | 55 ++++--- .../surefire/report/StatelessXmlReporterTest.java | 26 +-- .../surefire/report/WrappedReportEntryTest.java | 68 +++++++- .../runorder/RunEntryStatisticsMapTest.java | 20 ++- .../report/ConsoleOutputFileReporterTest.java | 8 +- .../maven/surefire/report/FileReporterTest.java | 4 +- pom.xml | 7 + .../surefire/booter/ForkedChannelEncoder.java | 4 + .../surefire/report/CategorizedReportEntry.java | 19 ++- .../apache/maven/surefire/report/ReportEntry.java | 14 ++ .../maven/surefire/report/SimpleReportEntry.java | 129 ++++++++++----- .../surefire/booter/ForkedChannelEncoderTest.java | 108 ++++++++---- .../apache/maven/surefire/its/JUnitPlatformIT.java | 18 +- .../junit-platform-engine-jupiter/pom.xml | 11 ++ ...{DisplayNameTest.javax => DisplayNameTest.java} | 16 +- .../surefire/common/junit4/JUnit4RunListener.java | 10 +- surefire-providers/surefire-junit-platform/pom.xml | 5 + .../surefire/junitplatform/RunListenerAdapter.java | 80 ++++----- .../junitplatform/RunListenerAdapterTest.java | 182 +++++++++++++++------ .../maven/surefire/junit/JUnit3Provider.java | 4 +- .../apache/maven/surefire/junit/PojoTestSet.java | 12 +- .../junit/TestListenerInvocationHandler.java | 4 +- .../maven/surefire/junit4/JUnit4Provider.java | 4 +- .../junitcore/NonConcurrentRunListener.java | 4 +- .../apache/maven/surefire/junitcore/TestSet.java | 2 +- .../maven/surefire/junitcore/TestMethodTest.java | 2 +- .../maven/surefire/testng/TestNGReporter.java | 9 +- .../apache/maven/surefire/testng/TestSuite.java | 4 +- 35 files changed, 691 insertions(+), 302 deletions(-) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java index 7e7ab78..f2a934f 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java @@ -159,7 +159,8 @@ public class ForkClient public void handle( RunMode runMode, TestSetReportEntry reportEntry ) { testsInProgress.clear(); - TestSetReportEntry entry = reportEntry( reportEntry.getSourceName(), reportEntry.getName(), + TestSetReportEntry entry = reportEntry( reportEntry.getSourceName(), reportEntry.getSourceText(), + reportEntry.getName(), reportEntry.getNameText(), reportEntry.getGroup(), reportEntry.getStackTraceWriter(), reportEntry.getElapsed(), reportEntry.getMessage(), getTestVmSystemProperties() ); getTestSetReporter().testSetCompleted( entry ); diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoder.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoder.java index 60ed138..b7950d0 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoder.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoder.java @@ -261,16 +261,18 @@ public final class ForkedChannelDecoder if ( listener != null && encoding != null && mode != null ) { String sourceName = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; + String sourceText = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String name = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; + String nameText = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String group = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String message = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String elapsed = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String traceMessage = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String smartTrimmedStackTrace = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; String stackTrace = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : null; - - listener.handle( mode, toReportEntry( encoding, sourceName, name, group, message, elapsed, - traceMessage, smartTrimmedStackTrace, stackTrace ) ); + ReportEntry reportEntry = toReportEntry( encoding, sourceName, sourceText, name, nameText, + group, message, elapsed, traceMessage, smartTrimmedStackTrace, stackTrace ); + listener.handle( mode, reportEntry ); } } else if ( event.isJvmExitError() ) @@ -294,7 +296,8 @@ public final class ForkedChannelDecoder static ReportEntry toReportEntry( Charset encoding, // ReportEntry: - String encSource, String encName, String encGroup, String encMessage, String encTimeElapsed, + String encSource, String encSourceText, String encName, String encNameText, + String encGroup, String encMessage, String encTimeElapsed, // StackTraceWriter: String encTraceMessage, String encSmartTrimmedStackTrace, String encStackTrace ) throws NumberFormatException @@ -306,14 +309,16 @@ public final class ForkedChannelDecoder } String source = decode( encSource, encoding ); + String sourceText = decode( encSourceText, encoding ); String name = decode( encName, encoding ); + String nameText = decode( encNameText, encoding ); String group = decode( encGroup, encoding ); StackTraceWriter stackTraceWriter = decodeTrace( encoding, encTraceMessage, encSmartTrimmedStackTrace, encStackTrace ); Integer elapsed = decodeToInteger( encTimeElapsed ); String message = decode( encMessage, encoding ); - return reportEntry( source, name, group, stackTraceWriter, elapsed, message, - Collections.<String, String>emptyMap() ); + return reportEntry( source, sourceText, name, nameText, + group, stackTraceWriter, elapsed, message, Collections.<String, String>emptyMap() ); } static String decode( String line, Charset encoding ) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java index 941b88a..9571f87 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/FileReporter.java @@ -74,7 +74,7 @@ public class FileReporter writer.write( "-------------------------------------------------------------------------------" ); writer.newLine(); - writer.write( "Test set: " + report.getSourceName() ); + writer.write( "Test set: " + report.getReportSourceName() ); writer.newLine(); writer.write( "-------------------------------------------------------------------------------" ); diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java index 11cec8d..5052f84 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java @@ -354,14 +354,14 @@ public class StatelessXmlReporter private void startTestElement( XMLWriter ppw, WrappedReportEntry report ) { ppw.startElement( "testcase" ); - ppw.addAttribute( "name", report.getName() == null ? "" : extraEscape( report.getName(), true ) ); + ppw.addAttribute( "name", report.getReportName() == null ? "" : extraEscape( report.getReportName(), true ) ); if ( report.getGroup() != null ) { ppw.addAttribute( "group", report.getGroup() ); } - String className = report.getReportName( reportNameSuffix ); + String className = report.getReportSourceName( reportNameSuffix ); if ( className != null ) { ppw.addAttribute( "classname", extraEscape( className, true ) ); @@ -378,7 +378,7 @@ public class StatelessXmlReporter ppw.addAttribute( "xsi:noNamespaceSchemaLocation", xsdSchemaLocation ); ppw.addAttribute( "version", "3.0" ); - String reportName = report.getReportName( reportNameSuffix ); + String reportName = report.getReportSourceName( reportNameSuffix ); ppw.addAttribute( "name", reportName == null ? "" : extraEscape( reportName, true ) ); if ( report.getGroup() != null ) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java index bb4c1b1..c1912a5 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java @@ -25,6 +25,7 @@ import org.apache.maven.surefire.report.TestSetReportEntry; import java.util.Collections; import java.util.Map; +import java.util.Objects; import static java.util.Collections.unmodifiableMap; import static org.apache.maven.plugin.surefire.report.ReporterUtils.formatElapsedTime; @@ -103,14 +104,26 @@ public class WrappedReportEntry } @Override + public String getSourceText() + { + return original.getSourceText(); + } + + @Override public String getName() { return original.getName(); } + @Override + public String getNameText() + { + return original.getNameText(); + } + public String getClassMethodName() { - return getSourceName() + "." + getName(); + return original.getSourceName() + "." + original.getName(); } @Override @@ -142,14 +155,23 @@ public class WrappedReportEntry return formatElapsedTime( getElapsed() ); } - public String getReportName() + String getReportSourceName() + { + String sourceName = getSourceName(); + String sourceText = getSourceText(); + return isBlank( sourceText ) || Objects.equals( sourceName, sourceText ) ? sourceName : sourceText; + } + + String getReportSourceName( String suffix ) { - return getSourceName(); + return isBlank( suffix ) ? getReportSourceName() : getReportSourceName() + "(" + suffix + ")"; } - public String getReportName( String suffix ) + String getReportName() { - return isBlank( suffix ) ? getReportName() : getReportName() + "(" + suffix + ")"; + String name = getName(); + String nameText = getNameText(); + return isBlank( nameText ) || Objects.equals( name, nameText ) ? name : nameText; } public String getOutput( boolean trimStackTrace ) diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java index 6b693bd..ab84690 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java @@ -268,7 +268,7 @@ public class ForkingRunListenerTest private SimpleReportEntry createDefaultReportEntry( Map<String, String> sysProps ) { - return new SimpleReportEntry( "com.abc.TestClass", "testMethod", null, 22, sysProps ); + return new SimpleReportEntry( "com.abc.TestClass", null, "testMethod", null, null, 22, sysProps ); } private SimpleReportEntry createDefaultReportEntry() @@ -278,7 +278,7 @@ public class ForkingRunListenerTest private SimpleReportEntry createAnotherDefaultReportEntry() { - return new SimpleReportEntry( "com.abc.AnotherTestClass", "testAnotherMethod", 42 ); + return new SimpleReportEntry( "com.abc.AnotherTestClass", null, "testAnotherMethod", null, 42 ); } private SimpleReportEntry createReportEntryWithStackTrace() diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java index e4107da..a2405c5 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClientTest.java @@ -907,8 +907,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:testset-starting:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -939,8 +943,12 @@ public class ForkClientTest .hasSize( 1 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getMessage() ) @@ -1017,12 +1025,16 @@ public class ForkClientTest when( reportEntry.getGroup() ).thenReturn( "this group" ); when( reportEntry.getMessage() ).thenReturn( "some test" ); when( reportEntry.getName() ).thenReturn( "my test" ); + when( reportEntry.getNameText() ).thenReturn( "dn2" ); when( reportEntry.getNameWithGroup() ).thenReturn( "name with group" ); when( reportEntry.getSourceName() ).thenReturn( "pkg.MyTest" ); + when( reportEntry.getSourceText() ).thenReturn( "dn1" ); when( reportEntry.getStackTraceWriter() ).thenReturn( stackTraceWriter ); String encodedSourceName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceName() ) ) ); + String encodedSourceText = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceText() ) ) ); String encodedName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getName() ) ) ); + String encodedNameText = encodeBase64String( toArray( UTF_8.encode( reportEntry.getNameText() ) ) ); String encodedGroup = encodeBase64String( toArray( UTF_8.encode( reportEntry.getGroup() ) ) ); String encodedMessage = encodeBase64String( toArray( UTF_8.encode( reportEntry.getMessage() ) ) ); @@ -1030,8 +1042,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:testset-starting:normal-run:UTF-8:" + encodedSourceName + ":" + + encodedSourceText + + ":" + encodedName + ":" + + encodedNameText + + ":" + encodedGroup + ":" + encodedMessage @@ -1060,8 +1076,12 @@ public class ForkClientTest .hasSize( 1 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isEqualTo( "dn1" ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isEqualTo( "dn2" ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getMessage() ) @@ -1153,8 +1173,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:testset-completed:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -1181,8 +1205,12 @@ public class ForkClientTest .hasSize( 1 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getMessage() ) @@ -1274,8 +1302,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -1307,8 +1339,12 @@ public class ForkClientTest .hasSize( 1 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getMessage() ) @@ -1396,7 +1432,7 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName - + ":-:-:-:-:-:-:-" ); + + ":-:-:-:-:-:-:-:-:-" ); assertThat( client.testsInProgress() ) .hasSize( 1 ) @@ -1405,8 +1441,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-succeeded:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -1433,8 +1473,12 @@ public class ForkClientTest .hasSize( 2 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isNull(); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getName() ) @@ -1530,7 +1574,7 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName - + ":-:-:-:-:-:-:-" ); + + ":-:-:-:-:-:-:-:-:-" ); assertThat( client.testsInProgress() ) .hasSize( 1 ) @@ -1539,8 +1583,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-failed:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -1567,12 +1615,20 @@ public class ForkClientTest .hasSize( 2 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isNull(); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getMessage() ) @@ -1664,7 +1720,7 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName - + ":-:-:-:-:-:-:-" ); + + ":-:-:-:-:-:-:-:-:-" ); assertThat( client.testsInProgress() ) .hasSize( 1 ) @@ -1673,8 +1729,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-skipped:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -1701,12 +1761,20 @@ public class ForkClientTest .hasSize( 2 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isNull(); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getNameText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getMessage() ) @@ -1787,9 +1855,11 @@ public class ForkClientTest when( reportEntry.getName() ).thenReturn( "my test" ); when( reportEntry.getNameWithGroup() ).thenReturn( "name with group" ); when( reportEntry.getSourceName() ).thenReturn( "pkg.MyTest" ); + when( reportEntry.getSourceText() ).thenReturn( "display name" ); when( reportEntry.getStackTraceWriter() ).thenReturn( stackTraceWriter ); String encodedSourceName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceName() ) ) ); + String encodedSourceText = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceText() ) ) ); String encodedName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getName() ) ) ); String encodedGroup = encodeBase64String( toArray( UTF_8.encode( reportEntry.getGroup() ) ) ); String encodedMessage = encodeBase64String( toArray( UTF_8.encode( reportEntry.getMessage() ) ) ); @@ -1798,7 +1868,9 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName - + ":-:-:-:-:-:-:-" ); + + ":" + + encodedSourceText + + ":-:':-:-:-:-:-:-" ); assertThat( client.testsInProgress() ) .hasSize( 1 ) @@ -1807,8 +1879,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-error:normal-run:UTF-8:" + encodedSourceName + ":" + + encodedSourceText + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -1835,10 +1911,14 @@ public class ForkClientTest .hasSize( 2 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isEqualTo( "display name" ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceText() ) + .isEqualTo( "display name" ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getName() ) .isEqualTo( "my test" ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getElapsed() ) @@ -1919,12 +1999,14 @@ public class ForkClientTest when( reportEntry.getGroup() ).thenReturn( "this group" ); when( reportEntry.getMessage() ).thenReturn( "some test" ); when( reportEntry.getName() ).thenReturn( "my test" ); + when( reportEntry.getNameText() ).thenReturn("display name"); when( reportEntry.getNameWithGroup() ).thenReturn( "name with group" ); when( reportEntry.getSourceName() ).thenReturn( "pkg.MyTest" ); when( reportEntry.getStackTraceWriter() ).thenReturn( stackTraceWriter ); String encodedSourceName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceName() ) ) ); String encodedName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getName() ) ) ); + String encodedText = encodeBase64String( toArray( UTF_8.encode( reportEntry.getNameText() ) ) ); String encodedGroup = encodeBase64String( toArray( UTF_8.encode( reportEntry.getGroup() ) ) ); String encodedMessage = encodeBase64String( toArray( UTF_8.encode( reportEntry.getMessage() ) ) ); @@ -1932,7 +2014,7 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName - + ":-:-:-:-:-:-:-" ); + + ":-:-:-:-:-:-:-:-:-" ); assertThat( client.testsInProgress() ) .hasSize( 1 ) @@ -1941,8 +2023,12 @@ public class ForkClientTest client.consumeMultiLineContent( ":maven:surefire:std:out:test-assumption-failure:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + encodedText + + ":" + encodedGroup + ":" + encodedMessage @@ -1969,12 +2055,16 @@ public class ForkClientTest .hasSize( 2 ); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); + assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getSourceText() ) + .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 0 ) ).getName() ) .isNull(); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getSourceName() ) .isEqualTo( "pkg.MyTest" ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getName() ) .isEqualTo( "my test" ); + assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getNameText() ) + .isEqualTo( "display name" ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getElapsed() ) .isEqualTo( 102 ); assertThat( ( (ReportEntry) receiver.getData().get( 1 ) ).getMessage() ) diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoderTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoderTest.java index 894ec2d..53c3562 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoderTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/output/ForkedChannelDecoderTest.java @@ -107,22 +107,24 @@ public class ForkedChannelDecoderTest @Test public void shouldRecognizeEmptyStream4ReportEntry() { - ReportEntry reportEntry = toReportEntry( null, null, "", null, null, "", + ReportEntry reportEntry = toReportEntry( null, null, null, "", "", null, null, "", "", "", null ); assertThat( reportEntry ).isNull(); - reportEntry = toReportEntry( UTF_8, "", "", "", "", "-", "", "", "" ); + reportEntry = toReportEntry( UTF_8, "", "", "", "", "", "", "-", "", "", "" ); assertThat( reportEntry ).isNotNull(); assertThat( reportEntry.getStackTraceWriter() ).isNull(); assertThat( reportEntry.getSourceName() ).isEmpty(); + assertThat( reportEntry.getSourceText() ).isEmpty(); assertThat( reportEntry.getName() ).isEmpty(); + assertThat( reportEntry.getNameText() ).isEmpty(); assertThat( reportEntry.getGroup() ).isEmpty(); assertThat( reportEntry.getNameWithGroup() ).isEmpty(); assertThat( reportEntry.getMessage() ).isEmpty(); assertThat( reportEntry.getElapsed() ).isNull(); rule.expect( NumberFormatException.class ); - toReportEntry( UTF_8, "", "", "", "", "", "", "", "" ); + toReportEntry( UTF_8, "", "", "", "", "", "", "", "", "", "" ); fail(); } @@ -153,58 +155,66 @@ public class ForkedChannelDecoderTest when( reportEntry.getGroup() ).thenReturn( "this group" ); when( reportEntry.getMessage() ).thenReturn( "skipped test" ); when( reportEntry.getName() ).thenReturn( "my test" ); + when( reportEntry.getNameText() ).thenReturn( "my display name" ); when( reportEntry.getNameWithGroup() ).thenReturn( "name with group" ); when( reportEntry.getSourceName() ).thenReturn( "pkg.MyTest" ); + when( reportEntry.getSourceText() ).thenReturn( "test class display name" ); when( reportEntry.getStackTraceWriter() ).thenReturn( stackTraceWriter ); String encodedSourceName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceName() ) ) ); + String encodedSourceText = encodeBase64String( toArray( UTF_8.encode( reportEntry.getSourceText() ) ) ); String encodedName = encodeBase64String( toArray( UTF_8.encode( reportEntry.getName() ) ) ); + String encodedText = encodeBase64String( toArray( UTF_8.encode( reportEntry.getNameText() ) ) ); String encodedGroup = encodeBase64String( toArray( UTF_8.encode( reportEntry.getGroup() ) ) ); String encodedMessage = encodeBase64String( toArray( UTF_8.encode( reportEntry.getMessage() ) ) ); - ReportEntry decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedName, encodedGroup, - encodedMessage, "-", null, null, null - ); + ReportEntry decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedSourceText, + encodedName, encodedText, encodedGroup, encodedMessage, "-", null, null, null ); assertThat( decodedReportEntry ).isNotNull(); assertThat( decodedReportEntry.getSourceName() ).isEqualTo( reportEntry.getSourceName() ); + assertThat( decodedReportEntry.getSourceText() ).isEqualTo( reportEntry.getSourceText() ); assertThat( decodedReportEntry.getName() ).isEqualTo( reportEntry.getName() ); + assertThat( decodedReportEntry.getNameText() ).isEqualTo(reportEntry.getNameText()); assertThat( decodedReportEntry.getGroup() ).isEqualTo( reportEntry.getGroup() ); assertThat( decodedReportEntry.getMessage() ).isEqualTo( reportEntry.getMessage() ); assertThat( decodedReportEntry.getStackTraceWriter() ).isNull(); - decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedName, encodedGroup, encodedMessage, - "-", encodedExceptionMsg, encodedSmartStackTrace, null - ); + decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedSourceText, encodedName, encodedText, + encodedGroup, encodedMessage, "-", encodedExceptionMsg, encodedSmartStackTrace, null ); assertThat( decodedReportEntry ).isNotNull(); assertThat( decodedReportEntry.getSourceName() ).isEqualTo( reportEntry.getSourceName() ); + assertThat( decodedReportEntry.getSourceText() ).isEqualTo( reportEntry.getSourceText() ); assertThat( decodedReportEntry.getName() ).isEqualTo( reportEntry.getName() ); + assertThat( decodedReportEntry.getNameText() ).isEqualTo(reportEntry.getNameText()); assertThat( decodedReportEntry.getGroup() ).isEqualTo( reportEntry.getGroup() ); assertThat( decodedReportEntry.getMessage() ).isEqualTo( reportEntry.getMessage() ); assertThat( decodedReportEntry.getElapsed() ).isNull(); assertThat( decodedReportEntry.getStackTraceWriter() ).isNull(); - decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedName, encodedGroup, encodedMessage, - "1003", encodedExceptionMsg, encodedSmartStackTrace, null - ); + decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedSourceText, encodedName, encodedText, + encodedGroup, encodedMessage, "1003", encodedExceptionMsg, encodedSmartStackTrace, null ); assertThat( decodedReportEntry ).isNotNull(); assertThat( decodedReportEntry.getSourceName() ).isEqualTo( reportEntry.getSourceName() ); + assertThat( decodedReportEntry.getSourceText() ).isEqualTo( reportEntry.getSourceText() ); assertThat( decodedReportEntry.getName() ).isEqualTo( reportEntry.getName() ); + assertThat( decodedReportEntry.getNameText() ).isEqualTo(reportEntry.getNameText()); assertThat( decodedReportEntry.getGroup() ).isEqualTo( reportEntry.getGroup() ); assertThat( decodedReportEntry.getMessage() ).isEqualTo( reportEntry.getMessage() ); assertThat( decodedReportEntry.getElapsed() ).isEqualTo( 1003 ); assertThat( decodedReportEntry.getStackTraceWriter() ).isNull(); - decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedName, encodedGroup, encodedMessage, - "1003", encodedExceptionMsg, encodedSmartStackTrace, - encodedStackTrace - ); + decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedSourceText, encodedName, encodedText, + encodedGroup, encodedMessage, "1003", encodedExceptionMsg, encodedSmartStackTrace, + encodedStackTrace ); assertThat( decodedReportEntry ).isNotNull(); assertThat( decodedReportEntry.getSourceName() ).isEqualTo( reportEntry.getSourceName() ); + assertThat( decodedReportEntry.getSourceText() ).isEqualTo( reportEntry.getSourceText() ); assertThat( decodedReportEntry.getName() ).isEqualTo( reportEntry.getName() ); + assertThat( decodedReportEntry.getNameText() ).isEqualTo(reportEntry.getNameText()); assertThat( decodedReportEntry.getGroup() ).isEqualTo( reportEntry.getGroup() ); assertThat( decodedReportEntry.getMessage() ).isEqualTo( reportEntry.getMessage() ); assertThat( decodedReportEntry.getElapsed() ).isEqualTo( 1003 ); @@ -217,14 +227,15 @@ public class ForkedChannelDecoderTest assertThat( decodedReportEntry.getStackTraceWriter().writeTraceToString() ).isEqualTo( stackTrace ); assertThat( decodedReportEntry.getStackTraceWriter().writeTrimmedTraceToString() ).isEqualTo( stackTrace ); - decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedName, encodedGroup, encodedMessage, - "1003", encodedExceptionMsg, encodedSmartStackTrace, - encodedTrimmedStackTrace - ); + decodedReportEntry = toReportEntry( UTF_8, encodedSourceName, encodedSourceText, encodedName, encodedText, + encodedGroup, encodedMessage, "1003", encodedExceptionMsg, encodedSmartStackTrace, + encodedTrimmedStackTrace ); assertThat( decodedReportEntry ).isNotNull(); assertThat( decodedReportEntry.getSourceName() ).isEqualTo( reportEntry.getSourceName() ); + assertThat( decodedReportEntry.getSourceText() ).isEqualTo( reportEntry.getSourceText() ); assertThat( decodedReportEntry.getName() ).isEqualTo( reportEntry.getName() ); + assertThat( decodedReportEntry.getNameText() ).isEqualTo(reportEntry.getNameText()); assertThat( decodedReportEntry.getGroup() ).isEqualTo( reportEntry.getGroup() ); assertThat( decodedReportEntry.getMessage() ).isEqualTo( reportEntry.getMessage() ); assertThat( decodedReportEntry.getElapsed() ).isEqualTo( 1003 ); @@ -643,8 +654,10 @@ public class ForkedChannelDecoderTest when( reportEntry.getGroup() ).thenReturn( "this group" ); when( reportEntry.getMessage() ).thenReturn( reportedMessage ); when( reportEntry.getName() ).thenReturn( "my test" ); + when( reportEntry.getName() ).thenReturn( "display name of test" ); when( reportEntry.getNameWithGroup() ).thenReturn( "name with group" ); when( reportEntry.getSourceName() ).thenReturn( "pkg.MyTest" ); + when( reportEntry.getSourceText() ).thenReturn("test class display name"); when( reportEntry.getStackTraceWriter() ).thenReturn( stackTraceWriter ); Stream out = Stream.newStream(); @@ -777,7 +790,9 @@ public class ForkedChannelDecoderTest public void handle( RunMode runMode, ReportEntry reportEntry ) { assertThat( reportEntry.getSourceName() ).isEqualTo( this.reportEntry.getSourceName() ); + assertThat( reportEntry.getSourceText() ).isEqualTo( this.reportEntry.getSourceText() ); assertThat( reportEntry.getName() ).isEqualTo( this.reportEntry.getName() ); + assertThat( reportEntry.getNameText() ).isEqualTo( this.reportEntry.getNameText() ); assertThat( reportEntry.getGroup() ).isEqualTo( this.reportEntry.getGroup() ); assertThat( reportEntry.getMessage() ).isEqualTo( this.reportEntry.getMessage() ); assertThat( reportEntry.getElapsed() ).isEqualTo( this.reportEntry.getElapsed() ); diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java index bebaed3..29b914a 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java @@ -87,7 +87,7 @@ public class StatelessXmlReporterTest new ConcurrentHashMap<String, Deque<WrappedReportEntry>>(), XSD ); reporter.cleanTestHistoryMap(); - ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), getClass().getName(), 12 ); + ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), null, getClass().getName(), null, 12 ); WrappedReportEntry testSetReportEntry = new WrappedReportEntry( reportEntry, ReportEntryType.SUCCESS, 12, null, null, systemProps() ); stats.testSucceeded( testSetReportEntry ); @@ -102,7 +102,7 @@ public class StatelessXmlReporterTest public void testAllFieldsSerialized() throws IOException { - ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), TEST_ONE, 12 ); + ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), null, TEST_ONE, null, 12 ); WrappedReportEntry testSetReportEntry = new WrappedReportEntry( reportEntry, ReportEntryType.SUCCESS, 12, null, null, systemProps() ); expectedReportFile = new File( reportDir, "TEST-" + getClass().getName() + ".xml" ); @@ -129,8 +129,8 @@ public class StatelessXmlReporterTest stdErr.write( stdErrPrefix + "?&-&£\u0020\u0000\u001F", false ); WrappedReportEntry t2 = - new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), TEST_TWO, stackTraceWriter, 13 ), - ReportEntryType.ERROR, 13, stdOut, stdErr ); + new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), null, TEST_TWO, null, + stackTraceWriter, 13 ), ReportEntryType.ERROR, 13, stdOut, stdErr ); stats.testSucceeded( t2 ); StatelessXmlReporter reporter = new StatelessXmlReporter( reportDir, null, false, 0, @@ -171,7 +171,7 @@ public class StatelessXmlReporterTest throws IOException { WrappedReportEntry testSetReportEntry = - new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), TEST_ONE, 12 ), + new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), null, TEST_ONE, null, 12 ), ReportEntryType.SUCCESS, 12, null, null, systemProps() ); expectedReportFile = new File( reportDir, "TEST-" + getClass().getName() + ".xml" ); @@ -187,23 +187,23 @@ public class StatelessXmlReporterTest String secondRunErr = "second run err"; WrappedReportEntry testTwoFirstError = - new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), TEST_TWO, stackTraceWriterOne, 5 ), - ReportEntryType.ERROR, 5, createStdOutput( firstRunOut ), + new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), null, TEST_TWO, null, + stackTraceWriterOne, 5 ), ReportEntryType.ERROR, 5, createStdOutput( firstRunOut ), createStdOutput( firstRunErr ) ); WrappedReportEntry testTwoSecondError = - new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), TEST_TWO, stackTraceWriterTwo, 13 ), - ReportEntryType.ERROR, 13, createStdOutput( secondRunOut ), + new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), null, TEST_TWO, null, + stackTraceWriterTwo, 13 ), ReportEntryType.ERROR, 13, createStdOutput( secondRunOut ), createStdOutput( secondRunErr ) ); WrappedReportEntry testThreeFirstRun = - new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), TEST_THREE, stackTraceWriterOne, 13 ), - ReportEntryType.FAILURE, 13, createStdOutput( firstRunOut ), + new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), null, TEST_THREE, null, + stackTraceWriterOne, 13 ), ReportEntryType.FAILURE, 13, createStdOutput( firstRunOut ), createStdOutput( firstRunErr ) ); WrappedReportEntry testThreeSecondRun = - new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), TEST_THREE, stackTraceWriterTwo, 2 ), - ReportEntryType.SUCCESS, 2, createStdOutput( secondRunOut ), + new WrappedReportEntry( new SimpleReportEntry( getClass().getName(), null, TEST_THREE, null, + stackTraceWriterTwo, 2 ), ReportEntryType.SUCCESS, 2, createStdOutput( secondRunOut ), createStdOutput( secondRunErr ) ); stats.testSucceeded( testTwoFirstError ); diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java index 61080a1..014f722 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java @@ -23,6 +23,8 @@ import org.apache.maven.surefire.report.SimpleReportEntry; import junit.framework.TestCase; +import static org.apache.maven.plugin.surefire.report.ReportEntryType.*; + /** * @author Kristian Rosenvold */ @@ -33,32 +35,80 @@ public class WrappedReportEntryTest { String className = "surefire.testcase.JunitParamsTest"; WrappedReportEntry wr = - new WrappedReportEntry( new SimpleReportEntry( className, null ), null, 12, null, null ); - final String reportName = wr.getReportName(); + new WrappedReportEntry( new SimpleReportEntry( className, null, null, null ), SUCCESS, 12, null, null ); + final String reportName = wr.getReportSourceName(); + assertEquals( "surefire.testcase.JunitParamsTest.null", wr.getClassMethodName() ); assertEquals( "surefire.testcase.JunitParamsTest", reportName ); + assertTrue( wr.isSucceeded() ); + assertFalse( wr.isErrorOrFailure() ); + assertFalse( wr.isSkipped() ); } public void testRegular() { - ReportEntry reportEntry = new SimpleReportEntry( "surefire.testcase.JunitParamsTest", "testSum" ); + ReportEntry reportEntry = new SimpleReportEntry( "surefire.testcase.JunitParamsTest", null, "testSum", null ); WrappedReportEntry wr = new WrappedReportEntry( reportEntry, null, 12, null, null ); - final String reportName = wr.getReportName(); - assertEquals( "surefire.testcase.JunitParamsTest", reportName ); + assertEquals( "surefire.testcase.JunitParamsTest.testSum", wr.getClassMethodName() ); + assertEquals( "surefire.testcase.JunitParamsTest", wr.getReportSourceName() ); + assertEquals( "surefire.testcase.JunitParamsTest(BDD)", wr.getReportSourceName( "BDD" ) ); + assertEquals( "testSum", wr.getReportName() ); + assertFalse(wr.isSucceeded()); + assertFalse( wr.isErrorOrFailure() ); + assertFalse( wr.isSkipped() ); + assertTrue( wr.getSystemProperties().isEmpty() ); + assertNull( wr.getGroup() ); + assertEquals( "surefire.testcase.JunitParamsTest", wr.getNameWithGroup() ); + } + + public void testDisplayNames() + { + ReportEntry reportEntry = + new SimpleReportEntry( "surefire.testcase.JunitParamsTest", "dn1", "testSum", "dn2", "exception" ); + WrappedReportEntry wr = new WrappedReportEntry( reportEntry, ERROR, 12, null, null ); + assertEquals( "surefire.testcase.JunitParamsTest.testSum", wr.getClassMethodName() ); + assertEquals( "dn1", wr.getReportSourceName() ); + assertEquals( "dn1(BDD)", wr.getReportSourceName( "BDD" ) ); + assertEquals( "dn2", wr.getReportName() ); + assertFalse(wr.isSucceeded()); + assertTrue(wr.isErrorOrFailure()); + assertFalse( wr.isSkipped() ); + assertNull( wr.getStackTraceWriter() ); + assertEquals( "surefire.testcase.JunitParamsTest.testSum Time elapsed: 0.012 s", + wr.getElapsedTimeSummary() ); + assertEquals( "surefire.testcase.JunitParamsTest.testSum Time elapsed: 0.012 s <<< ERROR!", + wr.getOutput( false ) ); + assertEquals( "exception", wr.getMessage() ); + } + + public void testEqualDisplayNames() + { + ReportEntry reportEntry = new SimpleReportEntry( "surefire.testcase.JunitParamsTest", + "surefire.testcase.JunitParamsTest", "testSum", "testSum" ); + WrappedReportEntry wr = new WrappedReportEntry( reportEntry, FAILURE, 12, null, null ); + assertEquals( "surefire.testcase.JunitParamsTest", wr.getReportSourceName() ); + assertEquals( "surefire.testcase.JunitParamsTest(BDD)", wr.getReportSourceName( "BDD" ) ); + assertEquals( "testSum", wr.getReportName() ); + assertFalse(wr.isSucceeded()); + assertTrue( wr.isErrorOrFailure() ); + assertFalse( wr.isSkipped() ); } public void testGetReportNameWithParams() { String className = "[0] 1\u002C 2\u002C 3 (testSum)"; - ReportEntry reportEntry = new SimpleReportEntry( className, null ); - WrappedReportEntry wr = new WrappedReportEntry( reportEntry, null, 12, null, null ); - final String reportName = wr.getReportName(); + ReportEntry reportEntry = new SimpleReportEntry( className, null, null, null ); + WrappedReportEntry wr = new WrappedReportEntry( reportEntry, SKIPPED, 12, null, null ); + final String reportName = wr.getReportSourceName(); assertEquals( "[0] 1, 2, 3 (testSum)", reportName ); + assertFalse( wr.isSucceeded() ); + assertFalse (wr.isErrorOrFailure() ); + assertTrue( wr.isSkipped() ); } public void testElapsed() { String className = "[0] 1\u002C 2\u002C 3 (testSum)"; - ReportEntry reportEntry = new SimpleReportEntry( className, null ); + ReportEntry reportEntry = new SimpleReportEntry( className, null, null, null ); WrappedReportEntry wr = new WrappedReportEntry( reportEntry, null, 12, null, null ); String elapsedTimeSummary = wr.getElapsedTimeSummary(); assertEquals( "[0] 1, 2, 3 (testSum) Time elapsed: 0.012 s", diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java index 2970356..b38d036 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/runorder/RunEntryStatisticsMapTest.java @@ -81,9 +81,9 @@ public class RunEntryStatisticsMapTest RunEntryStatisticsMap existingEntries = RunEntryStatisticsMap.fromFile( data ); RunEntryStatisticsMap newResults = new RunEntryStatisticsMap(); - ReportEntry reportEntry1 = new SimpleReportEntry( "abc", "method1", 42 ); - ReportEntry reportEntry2 = new SimpleReportEntry( "abc", "willFail", 17 ); - ReportEntry reportEntry3 = new SimpleReportEntry( "abc", "method3", 100 ); + ReportEntry reportEntry1 = new SimpleReportEntry( "abc", null, "method1", null, 42 ); + ReportEntry reportEntry2 = new SimpleReportEntry( "abc", null, "willFail", null, 17 ); + ReportEntry reportEntry3 = new SimpleReportEntry( "abc", null, "method3", null, 100 ); newResults.add( existingEntries.createNextGeneration( reportEntry1 ) ); newResults.add( existingEntries.createNextGeneration( reportEntry2 ) ); @@ -104,9 +104,9 @@ public class RunEntryStatisticsMapTest RunEntryStatisticsMap nextRun = RunEntryStatisticsMap.fromFile( data ); newResults = new RunEntryStatisticsMap(); - ReportEntry newRunReportEntry1 = new SimpleReportEntry( "abc", "method1", 52 ); - ReportEntry newRunReportEntry2 = new SimpleReportEntry( "abc", "willFail", 27 ); - ReportEntry newRunReportEntry3 = new SimpleReportEntry( "abc", "method3", 110 ); + ReportEntry newRunReportEntry1 = new SimpleReportEntry( "abc", null, "method1", null, 52 ); + ReportEntry newRunReportEntry2 = new SimpleReportEntry( "abc", null, "willFail", null, 27 ); + ReportEntry newRunReportEntry3 = new SimpleReportEntry( "abc", null, "method3", null, 110 ); newResults.add( nextRun.createNextGeneration( newRunReportEntry1 ) ); newResults.add( nextRun.createNextGenerationFailure( newRunReportEntry2 ) ); @@ -129,7 +129,7 @@ public class RunEntryStatisticsMapTest { File data = File.createTempFile( "surefire-unit", "test" ); RunEntryStatisticsMap reportEntries = RunEntryStatisticsMap.fromFile( data ); - ReportEntry reportEntry = new SimpleReportEntry( "abc", "line1\nline2" + NL + " line3", 42 ); + ReportEntry reportEntry = new SimpleReportEntry( "abc", null, "line1\nline2" + NL + " line3", null, 42 ); reportEntries.add( reportEntries.createNextGeneration( reportEntry ) ); reportEntries.serialize( data ); @@ -163,8 +163,10 @@ public class RunEntryStatisticsMapTest { File data = File.createTempFile( "surefire-unit", "test" ); RunEntryStatisticsMap reportEntries = RunEntryStatisticsMap.fromFile( data ); - reportEntries.add( reportEntries.createNextGeneration( new SimpleReportEntry( "abc", "line1\nline2", 42 ) ) ); - reportEntries.add( reportEntries.createNextGeneration( new SimpleReportEntry( "abc", "test", 10 ) ) ); + reportEntries.add( + reportEntries.createNextGeneration( new SimpleReportEntry( "abc", null, "line1\nline2", null, 42 ) ) ); + reportEntries.add( + reportEntries.createNextGeneration( new SimpleReportEntry( "abc", null, "test", null, 10 ) ) ); reportEntries.serialize( data ); try ( InputStream io = new FileInputStream( data ) ) diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java index ee086f5..9e35723 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/ConsoleOutputFileReporterTest.java @@ -45,7 +45,7 @@ public class ConsoleOutputFileReporterTest File reportDir = new File( new File( System.getProperty( "user.dir" ), "target" ), "tmp1" ); //noinspection ResultOfMethodCallIgnored reportDir.mkdirs(); - ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), getClass().getName() ); + ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), null, getClass().getName(), null ); ConsoleOutputFileReporter reporter = new ConsoleOutputFileReporter( reportDir, null, null ); reporter.testSetStarting( reportEntry ); reporter.writeTestOutput( "some ", false, true ); @@ -73,7 +73,7 @@ public class ConsoleOutputFileReporterTest //noinspection ResultOfMethodCallIgnored reportDir.mkdirs(); String suffixText = "sampleSuffixText"; - ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), getClass().getName() ); + ReportEntry reportEntry = new SimpleReportEntry( getClass().getName(), null, getClass().getName(), null ); ConsoleOutputFileReporter reporter = new ConsoleOutputFileReporter( reportDir, suffixText, null ); reporter.testSetStarting( reportEntry ); reporter.writeTestOutput( "some ", false, true ); @@ -99,7 +99,7 @@ public class ConsoleOutputFileReporterTest reportDir.mkdirs(); ConsoleOutputFileReporter reporter = new ConsoleOutputFileReporter( reportDir, null, null ); reporter.writeTestOutput( "some text", false, true ); - reporter.testSetCompleted( new SimpleReportEntry( getClass().getName(), getClass().getName() ) ); + reporter.testSetCompleted( new SimpleReportEntry( getClass().getName(), null, getClass().getName(), null ) ); reporter.close(); File expectedReportFile = new File( reportDir, "null-output.txt" ); @@ -120,7 +120,7 @@ public class ConsoleOutputFileReporterTest //noinspection ResultOfMethodCallIgnored reportDir.mkdirs(); final ConsoleOutputFileReporter reporter = new ConsoleOutputFileReporter( reportDir, null, null ); - reporter.testSetStarting( new SimpleReportEntry( getClass().getName(), getClass().getName() ) ); + reporter.testSetStarting( new SimpleReportEntry( getClass().getName(), null, getClass().getName(), null ) ); ExecutorService scheduler = Executors.newFixedThreadPool( 10 ); final ArrayList<Callable<Void>> jobs = new ArrayList<>(); for ( int i = 0; i < 10; i++ ) diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java index b733e2a..0693626 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/report/FileReporterTest.java @@ -42,7 +42,7 @@ public class FileReporterTest public void testFileNameWithoutSuffix() { File reportDir = new File( "target" ); - reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); + reportEntry = new SimpleReportEntry( getClass().getName(), null, testName, null ); WrappedReportEntry wrappedReportEntry = new WrappedReportEntry( reportEntry, ReportEntryType.SUCCESS, 12, null, null ); reporter = new FileReporter( reportDir, null, Charset.defaultCharset() ); @@ -64,7 +64,7 @@ public class FileReporterTest { File reportDir = new File( "target" ); String suffixText = "sampleSuffixText"; - reportEntry = new SimpleReportEntry( this.getClass().getName(), testName ); + reportEntry = new SimpleReportEntry( getClass().getName(), null, testName, null ); WrappedReportEntry wrappedReportEntry = new WrappedReportEntry( reportEntry, ReportEntryType.SUCCESS, 12, null, null ); reporter = new FileReporter( reportDir, suffixText, Charset.defaultCharset() ); diff --git a/pom.xml b/pom.xml index e30a333..740357a 100644 --- a/pom.xml +++ b/pom.xml @@ -357,6 +357,12 @@ <artifactId>powermock-api-mockito2</artifactId> <version>${powermockVersion}</version> </dependency> + <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-reflect</artifactId> + <version>${powermockVersion}</version> + <scope>compile</scope> + </dependency> <!-- END: PowerMock@Java9 --> <dependency> <groupId>junit</groupId> @@ -464,6 +470,7 @@ <compilerArgs> <arg>-Xdoclint:all</arg> </compilerArgs> + <encoding>UTF-8</encoding> </configuration> </plugin> <!-- NOTE: animal sniffer does not check test classes: https://jira.codehaus.org/browse/MANIMALSNIFFER-40 --> diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedChannelEncoder.java b/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedChannelEncoder.java index 9a46fca..f66e137 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedChannelEncoder.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/booter/ForkedChannelEncoder.java @@ -328,8 +328,12 @@ public final class ForkedChannelEncoder .append( ':' ) .append( toBase64( reportEntry.getSourceName() ) ) .append( ':' ) + .append( toBase64( reportEntry.getSourceText() ) ) + .append( ':' ) .append( toBase64( reportEntry.getName() ) ) .append( ':' ) + .append( toBase64( reportEntry.getNameText() ) ) + .append( ':' ) .append( toBase64( reportEntry.getGroup() ) ) .append( ':' ) .append( toBase64( reportEntry.getMessage() ) ) diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java index 226999e..b05c386 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/report/CategorizedReportEntry.java @@ -42,30 +42,35 @@ public class CategorizedReportEntry public CategorizedReportEntry( String source, String name, String group, StackTraceWriter stackTraceWriter, Integer elapsed ) { - super( source, name, stackTraceWriter, elapsed ); + super( source, null, name, null, stackTraceWriter, elapsed ); this.group = group; } public CategorizedReportEntry( String source, String name, String group, StackTraceWriter stackTraceWriter, Integer elapsed, String message ) { - this( source, name, group, stackTraceWriter, elapsed, message, Collections.<String, String>emptyMap() ); + this( source, null, name, null, + group, stackTraceWriter, elapsed, message, Collections.<String, String>emptyMap() ); } - public CategorizedReportEntry( String source, String name, String group, StackTraceWriter stackTraceWriter, + public CategorizedReportEntry( String source, String sourceText, String name, String nameText, + String group, StackTraceWriter stackTraceWriter, Integer elapsed, String message, Map<String, String> systemProperties ) { - super( source, name, stackTraceWriter, elapsed, message, systemProperties ); + super( source, sourceText, name, nameText, stackTraceWriter, elapsed, message, systemProperties ); this.group = group; } - public static TestSetReportEntry reportEntry( String source, String name, String group, + public static TestSetReportEntry reportEntry( String source, String sourceText, String name, String nameText, + String group, StackTraceWriter stackTraceWriter, Integer elapsed, String message, Map<String, String> systemProperties ) { return group != null - ? new CategorizedReportEntry( source, name, group, stackTraceWriter, elapsed, message, systemProperties ) - : new SimpleReportEntry( source, name, stackTraceWriter, elapsed, message, systemProperties ); + ? new CategorizedReportEntry( source, sourceText, name, nameText, + group, stackTraceWriter, elapsed, message, systemProperties ) + : new SimpleReportEntry( source, sourceText, name, nameText, + stackTraceWriter, elapsed, message, systemProperties ); } @Override diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java index 6e4a04a..9d93b6c 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/report/ReportEntry.java @@ -33,6 +33,13 @@ public interface ReportEntry String getSourceName(); /** + * Human readable {@link #getSourceName() test class}. + * + * @return source text + */ + String getSourceText(); + + /** * The name of the test case * * @return A string describing the test case @@ -40,6 +47,13 @@ public interface ReportEntry String getName(); /** + * Human readable {@link #getName() test case}. + * + * @return name text + */ + String getNameText(); + + /** * The group/category of the testcase * * @return A string diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java b/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java index 73e5f3b..8e8367e 100644 --- a/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java +++ b/surefire-api/src/main/java/org/apache/maven/surefire/report/SimpleReportEntry.java @@ -35,79 +35,88 @@ public class SimpleReportEntry private final String source; + private final String sourceText; + private final String name; + private final String nameText; + private final StackTraceWriter stackTraceWriter; private final Integer elapsed; private final String message; - public SimpleReportEntry() + public SimpleReportEntry( String source, String sourceText, String name, String nameText ) { - this( null, null ); + this( source, sourceText, name, nameText, null, null ); } - public SimpleReportEntry( String source, String name ) - { - this( source, name, null, null ); - } - - public SimpleReportEntry( String source, String name, Map<String, String> systemProperties ) + public SimpleReportEntry( String source, String sourceText, String name, String nameText, + Map<String, String> systemProperties ) { - this( source, name, null, null, systemProperties ); + this( source, sourceText, name, nameText, null, null, systemProperties ); } - private SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter ) + private SimpleReportEntry( String source, String sourceText, String name, String nameText, + StackTraceWriter stackTraceWriter ) { - this( source, name, stackTraceWriter, null ); + this( source, sourceText, name, nameText, stackTraceWriter, null ); } - public SimpleReportEntry( String source, String name, Integer elapsed ) + public SimpleReportEntry( String source, String sourceText, String name, String nameText, Integer elapsed ) { - this( source, name, null, elapsed ); + this( source, sourceText, name, nameText, null, elapsed ); } - public SimpleReportEntry( String source, String name, String message ) + public SimpleReportEntry( String source, String sourceText, String name, String nameText, String message ) { - this( source, name, null, null, message, Collections.<String, String>emptyMap() ); + this( source, sourceText, name, nameText, null, null, message, Collections.<String, String>emptyMap() ); } - protected SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed, - String message, Map<String, String> systemProperties ) + public SimpleReportEntry( String source, String sourceText, String name, String nameText, + StackTraceWriter stackTraceWriter, Integer elapsed, String message, + Map<String, String> systemProperties ) { this.source = source; + this.sourceText = sourceText; this.name = name; + this.nameText = nameText; this.stackTraceWriter = stackTraceWriter; this.message = message; this.elapsed = elapsed; this.systemProperties = new ImmutableMap<>( systemProperties ); } - public SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed ) + public SimpleReportEntry( String source, String sourceText, String name, String nameText, + StackTraceWriter stackTraceWriter, Integer elapsed ) { - this( source, name, stackTraceWriter, elapsed, Collections.<String, String>emptyMap() ); + this( source, sourceText, name, nameText, stackTraceWriter, elapsed, Collections.<String, String>emptyMap() ); } - public SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed, - Map<String, String> systemProperties ) + public SimpleReportEntry( String source, String sourceText, String name, String nameText, + StackTraceWriter stackTraceWriter, Integer elapsed, Map<String, String> systemProperties ) { - this( source, name, stackTraceWriter, elapsed, safeGetMessage( stackTraceWriter ), systemProperties ); + this( source, sourceText, name, nameText, + stackTraceWriter, elapsed, safeGetMessage( stackTraceWriter ), systemProperties ); } - public static SimpleReportEntry assumption( String source, String name, String message ) + public static SimpleReportEntry assumption( String source, String sourceText, String name, String nameText, + String message ) { - return new SimpleReportEntry( source, name, message ); + return new SimpleReportEntry( source, sourceText, name, nameText, message ); } - public static SimpleReportEntry ignored( String source, String name, String message ) + public static SimpleReportEntry ignored( String source, String sourceText, String name, String nameText, + String message ) { - return new SimpleReportEntry( source, name, message ); + return new SimpleReportEntry( source, sourceText, name, nameText, message ); } - public static SimpleReportEntry withException( String source, String name, StackTraceWriter stackTraceWriter ) + public static SimpleReportEntry withException( String source, String sourceText, String name, String nameText, + StackTraceWriter stackTraceWriter ) { - return new SimpleReportEntry( source, name, stackTraceWriter ); + return new SimpleReportEntry( source, sourceText, name, nameText, stackTraceWriter ); } private static String safeGetMessage( StackTraceWriter stackTraceWriter ) @@ -130,12 +139,24 @@ public class SimpleReportEntry } @Override + public String getSourceText() + { + return sourceText; + } + + @Override public String getName() { return name; } @Override + public String getNameText() + { + return nameText; + } + + @Override public String getGroup() { return null; @@ -162,8 +183,9 @@ public class SimpleReportEntry @Override public String toString() { - return "ReportEntry{" + "source='" + source + '\'' + ", name='" + name + '\'' + ", stackTraceWriter=" - + stackTraceWriter + ", elapsed=" + elapsed + ", message=" + message + '}'; + return "ReportEntry{" + "source='" + source + "', sourceText='" + sourceText + + "', name='" + name + "', nameText='" + nameText + "', stackTraceWriter='" + + stackTraceWriter + "', elapsed='" + elapsed + "', message='" + message + "'}"; } @Override @@ -185,16 +207,25 @@ public class SimpleReportEntry } SimpleReportEntry that = (SimpleReportEntry) o; - return isElapsedTimeEqual( that ) && isNameEqual( that ) && isSourceEqual( that ) && isStackEqual( that ); + return isSourceEqual( that ) && isSourceTextEqual( that ) + && isNameEqual( that ) && isNameTextEqual( that ) + && isStackEqual( that ) + && isElapsedTimeEqual( that ) + && isSystemPropertiesEqual( that ) + && isMessageEqual( that ); } @Override public int hashCode() { - int result = Objects.hashCode( source ); - result = 31 * result + Objects.hashCode( name ); - result = 31 * result + Objects.hashCode( stackTraceWriter ); - result = 31 * result + Objects.hashCode( elapsed ); + int result = Objects.hashCode( getSourceName() ); + result = 31 * result + Objects.hashCode( getSourceText() ); + result = 31 * result + Objects.hashCode( getName() ); + result = 31 * result + Objects.hashCode( getNameText() ); + result = 31 * result + Objects.hashCode( getStackTraceWriter() ); + result = 31 * result + Objects.hashCode( getElapsed() ); + result = 31 * result + Objects.hashCode( getSystemProperties() ); + result = 31 * result + Objects.hashCode( getMessage() ); return result; } @@ -212,21 +243,41 @@ public class SimpleReportEntry private boolean isElapsedTimeEqual( SimpleReportEntry en ) { - return Objects.equals( elapsed, en.elapsed ); + return Objects.equals( getElapsed(), en.getElapsed() ); + } + + private boolean isNameTextEqual( SimpleReportEntry en ) + { + return Objects.equals( getNameText(), en.getNameText() ); } private boolean isNameEqual( SimpleReportEntry en ) { - return Objects.equals( name, en.name ); + return Objects.equals( getName(), en.getName() ); } private boolean isSourceEqual( SimpleReportEntry en ) { - return Objects.equals( source, en.source ); + return Objects.equals( getSourceName(), en.getSourceName() ); + } + + private boolean isSourceTextEqual( SimpleReportEntry en ) + { + return Objects.equals( getSourceText(), en.getSourceText() ); } private boolean isStackEqual( SimpleReportEntry en ) { - return Objects.equals( stackTraceWriter, en.stackTraceWriter ); + return Objects.equals( getStackTraceWriter(), en.getStackTraceWriter() ); + } + + private boolean isSystemPropertiesEqual( SimpleReportEntry en ) + { + return Objects.equals( getSystemProperties(), en.getSystemProperties() ); + } + + private boolean isMessageEqual( SimpleReportEntry en ) + { + return Objects.equals( getMessage(), en.getMessage() ); } } diff --git a/surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkedChannelEncoderTest.java b/surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkedChannelEncoderTest.java index b9708b0..4429f79 100644 --- a/surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkedChannelEncoderTest.java +++ b/surefire-api/src/test/java/org/apache/maven/surefire/booter/ForkedChannelEncoderTest.java @@ -179,43 +179,51 @@ public class ForkedChannelEncoderTest StringBuilder encode = encode( "X", "normal-run", reportEntry, false ); assertThat( encode.toString() ) .isEqualTo( ":maven:surefire:std:out:X:normal-run:UTF-8:" - + encodedSourceName - + ":" - + encodedName - + ":" - + encodedGroup - + ":" - + encodedMessage - + ":" - + 102 - + ":" - - + encodedExceptionMsg - + ":" - + encodedSmartStackTrace - + ":" - + encodedStackTrace + + encodedSourceName + + ":" + + "-" + + ":" + + encodedName + + ":" + + "-" + + ":" + + encodedGroup + + ":" + + encodedMessage + + ":" + + 102 + + ":" + + + encodedExceptionMsg + + ":" + + encodedSmartStackTrace + + ":" + + encodedStackTrace ); encode = encode( "X", "normal-run", reportEntry, true ); assertThat( encode.toString() ) .isEqualTo( ":maven:surefire:std:out:X:normal-run:UTF-8:" - + encodedSourceName - + ":" - + encodedName - + ":" - + encodedGroup - + ":" - + encodedMessage - + ":" - + 102 - + ":" - - + encodedExceptionMsg - + ":" - + encodedSmartStackTrace - + ":" - + encodedTrimmedStackTrace + + encodedSourceName + + ":" + + "-" + + ":" + + encodedName + + ":" + + "-" + + ":" + + encodedGroup + + ":" + + encodedMessage + + ":" + + 102 + + ":" + + + encodedExceptionMsg + + ":" + + encodedSmartStackTrace + + ":" + + encodedTrimmedStackTrace ); Stream out = Stream.newStream(); @@ -227,8 +235,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:testset-starting:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -253,8 +265,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:testset-starting:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -316,8 +332,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:testset-completed:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -379,8 +399,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:test-starting:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -442,8 +466,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:test-succeeded:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -505,8 +533,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:test-failed:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -567,8 +599,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:test-skipped:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -628,8 +664,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:test-error:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage @@ -687,8 +727,12 @@ public class ForkedChannelEncoderTest .isEqualTo( ":maven:surefire:std:out:test-assumption-failure:normal-run:UTF-8:" + encodedSourceName + ":" + + "-" + + ":" + encodedName + ":" + + "-" + + ":" + encodedGroup + ":" + encodedMessage diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformIT.java index 7675843..73f3748 100644 --- a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformIT.java +++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformIT.java @@ -22,10 +22,11 @@ package org.apache.maven.surefire.its; import org.apache.maven.surefire.its.fixture.OutputValidator; import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.apache.maven.surefire.its.fixture.HelperAssertions.assumeJavaVersion; +import static org.apache.maven.surefire.its.fixture.HelperAssertions.convertUnicodeToUTF8; public class JUnitPlatformIT extends SurefireJUnit4IntegrationTestCase @@ -40,27 +41,24 @@ public class JUnitPlatformIT public void testJupiterEngine() { unpack( "/junit-platform-engine-jupiter" ) + .setTestToRun( "Basic*Test" ) .executeTest() .verifyErrorFree( 5 ); } @Test - @Ignore( "Uncomment while developing SUREFIRE-1222. Rename 'javax' extension of DisplayNameTest.javax." ) public void testJupiterEngineWithDisplayNames() { OutputValidator validator = unpack( "/junit-platform-engine-jupiter" ) .executeTest() .verifyErrorFree( 7 ); - validator.getSurefireReportsFile( "junitplatformenginejupiter.DisplayNameTest.txt" ) - // .assertContainsText( "<< ✨ >>" ) // after @DisplayName is uncommented via SUREFIRE-1222 - .assertContainsText( "Test set: junitplatformenginejupiter.DisplayNameTest" ); + validator.getSurefireReportsFile( "junitplatformenginejupiter.DisplayNameTest.txt", UTF_8 ) + .assertContainsText( convertUnicodeToUTF8( "<< ✨ >>" ) ); - validator.getSurefireReportsFile( "TEST-junitplatformenginejupiter.DisplayNameTest.xml" ) - // At the moment, the testcase with the same is reported twice: test1() and test2() use the same display name - // SUREFIRE-1222 will solve this. - .assertContainsText( "testcase name=\"73$71 ✔\" classname=\"junitplatformenginejupiter.DisplayNameTest\"" ) - .assertContainsText( "testcase name=\"73$71 ✔\" classname=\"junitplatformenginejupiter.DisplayNameTest\"" ); + validator.getSurefireReportsFile( "TEST-junitplatformenginejupiter.DisplayNameTest.xml", UTF_8 ) + .assertContainsText( "testcase name=\"73$71 ✔\" classname=\"<< ✨ >>\"" ) + .assertContainsText( "testcase name=\"73$72 ✔\" classname=\"<< ✨ >>\"" ); } @Test diff --git a/surefire-its/src/test/resources/junit-platform-engine-jupiter/pom.xml b/surefire-its/src/test/resources/junit-platform-engine-jupiter/pom.xml index 192cc8a..bbcc715 100644 --- a/surefire-its/src/test/resources/junit-platform-engine-jupiter/pom.xml +++ b/surefire-its/src/test/resources/junit-platform-engine-jupiter/pom.xml @@ -32,6 +32,7 @@ <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.jupiter.version>5.2.0</junit.jupiter.version> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <!-- @@ -58,9 +59,19 @@ <build> <plugins> <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.7.0</version> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire.version}</version> + <configuration> + <redirectTestOutputToFile>true</redirectTestOutputToFile> + </configuration> </plugin> </plugins> </build> diff --git a/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.javax b/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java similarity index 65% rename from surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.javax rename to surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java index 8089ad0..a6401e3 100644 --- a/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.javax +++ b/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java @@ -19,25 +19,27 @@ package junitplatformenginejupiter; * under the License. */ -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -// TODO Uncomment after SUREFIRE-1222 is done -// @DisplayName("<< ✨ >>") +@DisplayName( "<< ✨ >>" ) class DisplayNameTest { @Test - @DisplayName("73$71 ✔") + @DisplayName( "73$71 ✔" ) void test1() + throws Exception { + System.out.println( getClass().getDeclaredMethod( "test1" ).getAnnotation( DisplayName.class ).value() ); + System.out.println( getClass().getAnnotation( DisplayName.class ).value() ); } @Test - @DisplayName("73$71 ✔") + @DisplayName( "73$72 ✔" ) void test2() + throws Exception { + System.out.println( getClass().getDeclaredMethod( "test2" ).getAnnotation( DisplayName.class ).value() ); + System.out.println( getClass().getAnnotation( DisplayName.class ).value() ); } } diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java index 234bcf5..c4a7991 100644 --- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java +++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java @@ -76,7 +76,7 @@ public class JUnit4RunListener { String reason = getAnnotatedIgnoreValue( description ); ClassMethod classMethod = toClassMethod( description ); - reporter.testSkipped( ignored( classMethod.getClazz(), classMethod.getMethod(), reason ) ); + reporter.testSkipped( ignored( classMethod.getClazz(), null, classMethod.getMethod(), null, reason ) ); } /** @@ -112,7 +112,8 @@ public class JUnit4RunListener { StackTraceWriter stackTrace = createStackTraceWriter( failure ); ClassMethod classMethod = toClassMethod( failure.getDescription() ); - ReportEntry report = withException( classMethod.getClazz(), classMethod.getMethod(), stackTrace ); + ReportEntry report = + withException( classMethod.getClazz(), null, classMethod.getMethod(), null, stackTrace ); if ( failure.getException() instanceof AssertionError ) { @@ -135,7 +136,8 @@ public class JUnit4RunListener { Description desc = failure.getDescription(); ClassMethod classMethod = toClassMethod( desc ); - ReportEntry report = assumption( classMethod.getClazz(), classMethod.getMethod(), failure.getMessage() ); + ReportEntry report = assumption( classMethod.getClazz(), null, classMethod.getMethod(), null, + failure.getMessage() ); reporter.testAssumptionFailure( report ); } finally @@ -176,7 +178,7 @@ public class JUnit4RunListener protected SimpleReportEntry createReportEntry( Description description ) { ClassMethod classMethod = toClassMethod( description ); - return new SimpleReportEntry( classMethod.getClazz(), classMethod.getMethod() ); + return new SimpleReportEntry( classMethod.getClazz(), null, classMethod.getMethod(), null ); } public static void rethrowAnyTestMechanismFailures( Result run ) diff --git a/surefire-providers/surefire-junit-platform/pom.xml b/surefire-providers/surefire-junit-platform/pom.xml index 8533b56..eaaaeef 100644 --- a/surefire-providers/surefire-junit-platform/pom.xml +++ b/surefire-providers/surefire-junit-platform/pom.xml @@ -101,6 +101,11 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.powermock</groupId> + <artifactId>powermock-reflect</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> <scope>test</scope> diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java index 0f9f8bb..29f3eeb 100644 --- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java +++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java @@ -23,6 +23,7 @@ import static java.util.Collections.emptyMap; import static org.apache.maven.surefire.util.internal.ObjectUtils.systemProps; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -74,12 +75,12 @@ final class RunListenerAdapter && testIdentifier.getSource().filter( ClassSource.class::isInstance ).isPresent() ) { testStartTime.put( testIdentifier, System.currentTimeMillis() ); - runListener.testSetStarting( createTestSetReportEntry( testIdentifier ) ); + runListener.testSetStarting( createReportEntry( testIdentifier ) ); } else if ( testIdentifier.isTest() ) { testStartTime.put( testIdentifier, System.currentTimeMillis() ); - runListener.testStarting( createTestSetReportEntry( testIdentifier ) ); + runListener.testStarting( createReportEntry( testIdentifier ) ); } } @@ -104,15 +105,15 @@ final class RunListenerAdapter } else { - runListener.testSetCompleted( createTestSetReportEntry( testIdentifier, testExecutionResult, - systemProps(), elapsed ) ); + runListener.testSetCompleted( createReportEntry( testIdentifier, testExecutionResult, + systemProps(), null, elapsed ) ); } break; case FAILED: if ( !isTest ) { - runListener.testSetCompleted( createTestSetReportEntry( testIdentifier, testExecutionResult, - systemProps(), elapsed ) ); + runListener.testSetCompleted( createReportEntry( testIdentifier, testExecutionResult, + systemProps(), null, elapsed ) ); } else if ( testExecutionResult.getThrowable() .filter( AssertionError.class::isInstance ).isPresent() ) @@ -127,12 +128,12 @@ final class RunListenerAdapter default: if ( isTest ) { - runListener.testSucceeded( createReportEntry( testIdentifier, elapsed ) ); + runListener.testSucceeded( createReportEntry( testIdentifier, null, elapsed ) ); } else { runListener.testSetCompleted( - createTestSetReportEntry( testIdentifier, null, systemProps(), elapsed ) ); + createReportEntry( testIdentifier, null, systemProps(), null, elapsed ) ); } } } @@ -149,58 +150,43 @@ final class RunListenerAdapter public void executionSkipped( TestIdentifier testIdentifier, String reason ) { testStartTime.remove( testIdentifier ); - String[] classMethodName = toClassMethodName( testIdentifier ); - String className = classMethodName[1]; - String methodName = classMethodName[3]; - runListener.testSkipped( new SimpleReportEntry( className, methodName, reason ) ); + runListener.testSkipped( createReportEntry( testIdentifier, null, emptyMap(), reason, null ) ); } - private SimpleReportEntry createTestSetReportEntry( TestIdentifier testIdentifier, - TestExecutionResult testExecutionResult, - Map<String, String> systemProperties, - Integer elapsedTime ) + private SimpleReportEntry createReportEntry( TestIdentifier testIdentifier, + TestExecutionResult testExecutionResult, + Map<String, String> systemProperties, + String reason, + Integer elapsedTime ) { String[] classMethodName = toClassMethodName( testIdentifier ); - String className = classMethodName[1]; - String methodName = classMethodName[3]; + String className = classMethodName[0]; + String classText = classMethodName[1]; + if ( Objects.equals( className, classText ) ) + { + classText = null; + } + String methodName = testIdentifier.isTest() ? classMethodName[2] : null; + String methodText = testIdentifier.isTest() ? classMethodName[3] : null; + if ( Objects.equals( methodName, methodText ) ) + { + methodText = null; + } StackTraceWriter stw = testExecutionResult == null ? null : toStackTraceWriter( className, methodName, testExecutionResult ); - return new SimpleReportEntry( className, methodName, stw, elapsedTime, systemProperties ); + return new SimpleReportEntry( className, classText, methodName, methodText, + stw, elapsedTime, reason, systemProperties ); } - private SimpleReportEntry createTestSetReportEntry( TestIdentifier testIdentifier ) + private SimpleReportEntry createReportEntry( TestIdentifier testIdentifier ) { - return createTestSetReportEntry( testIdentifier, emptyMap() ); - } - - private SimpleReportEntry createTestSetReportEntry( TestIdentifier testIdentifier, - Map<String, String> systemProperties ) - { - return createTestSetReportEntry( testIdentifier, null, systemProperties, null ); - } - - private SimpleReportEntry createReportEntry( TestIdentifier testIdentifier, Integer elapsedTime ) - { - return createReportEntry( testIdentifier, (StackTraceWriter) null, elapsedTime ); + return createReportEntry( testIdentifier, null, null ); } private SimpleReportEntry createReportEntry( TestIdentifier testIdentifier, TestExecutionResult testExecutionResult, Integer elapsedTime ) { - String[] classMethodNames = toClassMethodName( testIdentifier ); - String realClassName = classMethodNames[0]; - String realMethodName = classMethodNames[2]; - return createReportEntry( testIdentifier, - toStackTraceWriter( realClassName, realMethodName, testExecutionResult ), elapsedTime ); - } - - private SimpleReportEntry createReportEntry( TestIdentifier testIdentifier, StackTraceWriter stackTraceWriter, - Integer elapsedTime ) - { - String[] classMethodNames = toClassMethodName( testIdentifier ); - String className = classMethodNames[1]; - String methodName = classMethodNames[3]; - return new SimpleReportEntry( className, methodName, stackTraceWriter, elapsedTime ); + return createReportEntry( testIdentifier, testExecutionResult, emptyMap(), null, elapsedTime ); } private StackTraceWriter toStackTraceWriter( String realClassName, String realMethodName, @@ -263,7 +249,7 @@ final class RunListenerAdapter String className = classSource.getClassName(); String simpleClassName = className.substring( 1 + className.lastIndexOf( '.' ) ); String source = display.equals( simpleClassName ) ? className : display; - return new String[] { source, source, null, null }; + return new String[] { className, source, null, null }; } else { diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java index bbc4457..e9c53ba 100644 --- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java +++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java @@ -33,8 +33,10 @@ import static org.junit.platform.engine.TestExecutionResult.failed; import static org.junit.platform.engine.TestExecutionResult.successful; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; +import static org.powermock.reflect.Whitebox.getInternalState; import java.lang.reflect.Method; +import java.util.Map; import java.util.Optional; import org.apache.maven.surefire.report.PojoStackTraceWriter; @@ -50,7 +52,6 @@ import org.junit.jupiter.engine.descriptor.ClassTestDescriptor; import org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor; import org.junit.platform.engine.ConfigurationParameters; import org.junit.platform.engine.TestDescriptor; -import org.junit.platform.engine.TestDescriptor.Type; import org.junit.platform.engine.TestSource; import org.junit.platform.engine.UniqueId; import org.junit.platform.engine.support.descriptor.AbstractTestDescriptor; @@ -121,8 +122,10 @@ public class RunListenerAdapterTest verify( listener ).testStarting( entryCaptor.capture() ); ReportEntry entry = entryCaptor.getValue(); - assertEquals( MY_TEST_METHOD_NAME + "(String)", entry.getName() ); + assertEquals( MY_TEST_METHOD_NAME, entry.getName() ); + assertEquals( MY_TEST_METHOD_NAME + "(String)", entry.getNameText() ); assertEquals( MyTestClass.class.getName(), entry.getSourceName() ); + assertNull( entry.getSourceText() ); assertNull( entry.getStackTraceWriter() ); } @@ -137,23 +140,31 @@ public class RunListenerAdapterTest parent.addChild( child ); TestPlan plan = TestPlan.from( singletonList( engine ) ); + String className = MyTestClass.class.getName(); + adapter.testPlanExecutionStarted( plan ); adapter.executionStarted( TestIdentifier.from( engine ) ); adapter.executionStarted( TestIdentifier.from( parent ) ); - verify( listener ).testSetStarting( new SimpleReportEntry( MyTestClass.class.getName(), null ) ); + verify( listener ) + .testSetStarting( new SimpleReportEntry( className, null, null, null ) ); verifyNoMoreInteractions( listener ); adapter.executionStarted( TestIdentifier.from( child ) ); - verify( listener ).testStarting( new SimpleReportEntry( MyTestClass.class.getName(), MY_TEST_METHOD_NAME ) ); + verify( listener ) + .testStarting( new SimpleReportEntry( className, null, MY_TEST_METHOD_NAME, null ) ); verifyNoMoreInteractions( listener ); adapter.executionFinished( TestIdentifier.from( child ), successful() ); ArgumentCaptor<SimpleReportEntry> report = ArgumentCaptor.forClass( SimpleReportEntry.class ); verify( listener ).testSucceeded( report.capture() ); assertThat( report.getValue().getSourceName() ) - .isEqualTo( MyTestClass.class.getName() ); + .isEqualTo( className ); + assertThat( report.getValue().getSourceText() ) + .isNull(); assertThat( report.getValue().getName() ) .isEqualTo( MY_TEST_METHOD_NAME ); + assertThat( report.getValue().getNameText() ) + .isNull(); assertThat( report.getValue().getElapsed() ) .isNotNull(); assertThat( report.getValue().getSystemProperties() ) @@ -164,7 +175,7 @@ public class RunListenerAdapterTest report = ArgumentCaptor.forClass( SimpleReportEntry.class ); verify( listener ).testSetCompleted( report.capture() ); assertThat( report.getValue().getSourceName() ) - .isEqualTo( MyTestClass.class.getName() ); + .isEqualTo( className ); assertThat( report.getValue().getName() ) .isNull(); assertThat( report.getValue().getElapsed() ) @@ -179,14 +190,22 @@ public class RunListenerAdapterTest @Test public void displayNamesInClassAndMethods() + throws Exception { EngineDescriptor engine = newEngineDescriptor(); TestDescriptor parent = newClassDescriptor( "parent" ); engine.addChild( parent ); - TestDescriptor child1 = newTestDescriptor( parent.getUniqueId().append( "test", "child1" ), "child1", TEST ); + + UniqueId id1 = parent.getUniqueId().append( MyTestClass.class.getName(), MY_NAMED_TEST_METHOD_NAME ); + Method m1 = MyTestClass.class.getDeclaredMethod( MY_NAMED_TEST_METHOD_NAME ); + TestDescriptor child1 = new TestMethodTestDescriptorWithDisplayName( id1, MyTestClass.class, m1, "dn1" ); parent.addChild( child1 ); - TestDescriptor child2 = newTestDescriptor( parent.getUniqueId().append( "test", "child2" ), "child2", TEST ); + + UniqueId id2 = parent.getUniqueId().append( MyTestClass.class.getName(), MY_TEST_METHOD_NAME ); + Method m2 = MyTestClass.class.getDeclaredMethod( MY_TEST_METHOD_NAME, String.class ); + TestDescriptor child2 = new TestMethodTestDescriptor( id2, MyTestClass.class, m2 ); parent.addChild( child2 ); + TestPlan plan = TestPlan.from( singletonList( engine ) ); InOrder inOrder = inOrder( listener ); @@ -198,6 +217,8 @@ public class RunListenerAdapterTest ArgumentCaptor<SimpleReportEntry> report = ArgumentCaptor.forClass( SimpleReportEntry.class ); inOrder.verify( listener ).testSetStarting( report.capture() ); assertThat( report.getValue().getSourceName() ) + .isEqualTo( MyTestClass.class.getName() ); + assertThat( report.getValue().getSourceText() ) .isEqualTo( "parent" ); assertThat( report.getValue().getName() ) .isNull(); @@ -206,53 +227,76 @@ public class RunListenerAdapterTest verifyZeroInteractions( listener ); adapter.executionStarted( TestIdentifier.from( child1 ) ); - inOrder.verify( listener ).testStarting( new SimpleReportEntry( "parent", "child1" ) ); - verifyNoMoreInteractions( listener ); + inOrder.verify( listener ) + .testStarting( new SimpleReportEntry( MyTestClass.class.getName(), "parent", + MY_NAMED_TEST_METHOD_NAME, "dn1" ) ); + inOrder.verifyNoMoreInteractions(); adapter.executionFinished( TestIdentifier.from( child1 ), successful() ); report = ArgumentCaptor.forClass( SimpleReportEntry.class ); inOrder.verify( listener ).testSucceeded( report.capture() ); assertThat( report.getValue().getSourceName() ) + .isEqualTo( MyTestClass.class.getName() ); + assertThat( report.getValue().getSourceText() ) .isEqualTo( "parent" ); assertThat( report.getValue().getName() ) - .isEqualTo( "child1" ); + .isEqualTo( MY_NAMED_TEST_METHOD_NAME ); + assertThat( report.getValue().getNameText() ) + .isEqualTo( "dn1" ); assertThat( report.getValue().getElapsed() ) .isNotNull(); assertThat( report.getValue().getSystemProperties() ) .isEmpty(); - verifyNoMoreInteractions( listener ); + inOrder.verifyNoMoreInteractions(); adapter.executionStarted( TestIdentifier.from( child2 ) ); - inOrder.verify( listener ).testStarting( new SimpleReportEntry( "parent", "child2" ) ); - verifyNoMoreInteractions( listener ); + inOrder.verify( listener ) + .testStarting( new SimpleReportEntry( MyTestClass.class.getName(), "parent", + MY_TEST_METHOD_NAME, MY_TEST_METHOD_NAME + "(String)" ) ); + inOrder.verifyNoMoreInteractions(); - adapter.executionFinished( TestIdentifier.from( child2 ), successful() ); + Exception assumptionFailure = new Exception(); + adapter.executionFinished( TestIdentifier.from( child2 ), aborted( assumptionFailure ) ); report = ArgumentCaptor.forClass( SimpleReportEntry.class ); - inOrder.verify( listener ).testSucceeded( report.capture() ); + inOrder.verify( listener ).testAssumptionFailure( report.capture() ); assertThat( report.getValue().getSourceName() ) + .isEqualTo( MyTestClass.class.getName() ); + assertThat( report.getValue().getSourceText() ) .isEqualTo( "parent" ); assertThat( report.getValue().getName() ) - .isEqualTo( "child2" ); + .isEqualTo( MY_TEST_METHOD_NAME ); + assertThat( report.getValue().getNameText() ) + .isEqualTo( MY_TEST_METHOD_NAME + "(String)" ); assertThat( report.getValue().getElapsed() ) .isNotNull(); assertThat( report.getValue().getSystemProperties() ) .isEmpty(); - verifyNoMoreInteractions( listener ); + assertThat( report.getValue().getStackTraceWriter() ) + .isNotNull(); + assertThat( report.getValue().getStackTraceWriter().getThrowable().getTarget() ) + .isSameAs(assumptionFailure); + inOrder.verifyNoMoreInteractions(); adapter.executionFinished( TestIdentifier.from( parent ), successful() ); inOrder.verify( listener ).testSetCompleted( report.capture() ); assertThat( report.getValue().getSourceName() ) + .isEqualTo( MyTestClass.class.getName() ); + assertThat( report.getValue().getSourceText() ) .isEqualTo( "parent" ); assertThat( report.getValue().getName() ) .isNull(); + assertThat( report.getValue().getNameText() ) + .isNull(); assertThat( report.getValue().getElapsed() ) .isNotNull(); assertThat( report.getValue().getSystemProperties() ) .isNotEmpty(); - verifyNoMoreInteractions( listener ); + assertThat( report.getValue().getStackTraceWriter() ) + .isNull(); + inOrder.verifyNoMoreInteractions(); adapter.executionFinished( TestIdentifier.from( engine ), successful() ); - verifyNoMoreInteractions( listener ); + inOrder.verifyNoMoreInteractions(); } @Test @@ -269,8 +313,15 @@ public class RunListenerAdapterTest TestPlan plan = TestPlan.from( singletonList( engine ) ); adapter.testPlanExecutionStarted( plan ); + assertThat( (TestPlan) getInternalState( adapter, "testPlan" ) ) + .isSameAs( plan ); + assertThat( (Map) getInternalState( adapter, "testStartTime" ) ) + .isEmpty(); + + adapter.executionStarted( TestIdentifier.from( engine ) ); - verify( listener ).testStarting( new SimpleReportEntry( "engine", "engine" ) ); + verify( listener ) + .testStarting( new SimpleReportEntry( "engine", null, "engine", null ) ); verifyNoMoreInteractions( listener ); adapter.executionFinished( TestIdentifier.from( engine ), successful() ); @@ -278,12 +329,25 @@ public class RunListenerAdapterTest verify( listener ).testSucceeded( report.capture() ); assertThat( report.getValue().getSourceName() ) .isEqualTo( "engine" ); + assertThat( report.getValue().getSourceText() ) + .isNull(); assertThat( report.getValue().getName() ) .isEqualTo( "engine" ); - assertThat( report.getValue().getElapsed() ) + assertThat( report.getValue().getNameText() ) + .isNull(); + assertThat(report.getValue().getElapsed()) .isNotNull(); + assertThat( report.getValue().getStackTraceWriter() ) + .isNull(); assertThat( report.getValue().getSystemProperties() ) .isEmpty(); + + adapter.testPlanExecutionFinished( plan ); + assertThat( (TestPlan) getInternalState( adapter, "testPlan" ) ) + .isNull(); + assertThat( (Map) getInternalState( adapter, "testStartTime" ) ) + .isEmpty(); + verifyNoMoreInteractions( listener ); } @@ -405,20 +469,34 @@ public class RunListenerAdapterTest adapter.executionFinished( TestIdentifier.from( classDescriptor ), successful() ); - verify( listener ).testSetStarting( new SimpleReportEntry( MyTestClass.class.getName(), null ) ); + String className = MyTestClass.class.getName(); + + verify( listener ) + .testSetStarting( new SimpleReportEntry( className, null, null, null ) ); ArgumentCaptor<SimpleReportEntry> report = ArgumentCaptor.forClass( SimpleReportEntry.class ); - verify( listener ).testSetCompleted( report.capture() ); + verify( listener ) + .testSetCompleted(report.capture() ); + assertThat( report.getValue().getSourceName() ) - .isEqualTo( MyTestClass.class.getName() ); + .isEqualTo( className ); + assertThat( report.getValue().getSourceText() ) + .isNull(); assertThat( report.getValue().getName() ) .isNull(); + assertThat( report.getValue().getNameText() ) + .isNull(); assertThat( report.getValue().getStackTraceWriter() ) .isNull(); assertThat( report.getValue().getElapsed() ) .isNotNull(); + assertThat( report.getValue().getSystemProperties() ) + .isNotEmpty(); - verify( listener, never() ).testSucceeded( any() ); + verify( listener, never() ) + .testSucceeded(any() ); + + verifyNoMoreInteractions( listener ); } @Test @@ -438,6 +516,9 @@ public class RunListenerAdapterTest ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); verify( listener ).testStarting( entryCaptor.capture() ); assertEquals( parentDisplay, entryCaptor.getValue().getSourceName() ); + assertNull(entryCaptor.getValue().getSourceText()); + assertNull( entryCaptor.getValue().getName() ); + assertNull( entryCaptor.getValue().getNameText() ); } @Test @@ -484,22 +565,8 @@ public class RunListenerAdapterTest public void displayNamesIgnoredInReport() throws NoSuchMethodException { - class TestMethodTestDescriptorWithDisplayName extends AbstractTestDescriptor - { - private TestMethodTestDescriptorWithDisplayName( UniqueId uniqueId, Class<?> testClass, Method testMethod ) - { - super( uniqueId, "some display name", MethodSource.from( testClass, testMethod ) ); - } - - @Override - public Type getType() - { - return Type.TEST; - } - } - TestMethodTestDescriptorWithDisplayName descriptor = new TestMethodTestDescriptorWithDisplayName( newId(), - MyTestClass.class, MyTestClass.class.getDeclaredMethod( "myNamedTestMethod" ) ); + MyTestClass.class, MyTestClass.class.getDeclaredMethod( "myNamedTestMethod" ), "some display name" ); TestIdentifier factoryIdentifier = TestIdentifier.from( descriptor ); ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); @@ -509,7 +576,10 @@ public class RunListenerAdapterTest ReportEntry value = entryCaptor.getValue(); - assertEquals( "some display name", value.getName() ); + assertEquals( MyTestClass.class.getName(), value.getSourceName() ); + assertNull(value.getSourceText()); + assertEquals( "myNamedTestMethod", value.getName() ); + assertEquals( "some display name", value.getNameText() ); } private static TestIdentifier newMethodIdentifier() @@ -584,18 +654,6 @@ public class RunListenerAdapterTest return new EngineDescriptor( UniqueId.forEngine( "engine" ), "engine" ); } - private TestDescriptor newTestDescriptor( UniqueId uniqueId, String displayName, Type type ) - { - return new AbstractTestDescriptor( uniqueId, displayName ) - { - @Override - public Type getType() - { - return type; - } - }; - } - private static TestIdentifier identifiersAsParentOnTestPlan( TestPlan plan, TestDescriptor parent, TestDescriptor child ) { @@ -623,6 +681,7 @@ public class RunListenerAdapterTest } private static final String MY_TEST_METHOD_NAME = "myTestMethod"; + private static final String MY_NAMED_TEST_METHOD_NAME = "myNamedTestMethod"; private static class MyTestClass { @@ -642,4 +701,19 @@ public class RunListenerAdapterTest { } } + + static class TestMethodTestDescriptorWithDisplayName extends AbstractTestDescriptor + { + private TestMethodTestDescriptorWithDisplayName( UniqueId uniqueId, + Class<?> testClass, Method testMethod, String displayName ) + { + super( uniqueId, displayName, MethodSource.from( testClass, testMethod ) ); + } + + @Override + public Type getType() + { + return Type.TEST; + } + } } diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java index bfdb4eb..d44d92b 100644 --- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java +++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java @@ -133,9 +133,9 @@ public class JUnit3Provider Map<String, String> systemProperties ) throws TestSetFailedException { - reporter.testSetStarting( new SimpleReportEntry( testSet.getName(), null ) ); + reporter.testSetStarting( new SimpleReportEntry( testSet.getName(), null, null, null ) ); testSet.execute( reporter, classLoader ); - reporter.testSetCompleted( new SimpleReportEntry( testSet.getName(), null, systemProperties ) ); + reporter.testSetCompleted( new SimpleReportEntry( testSet.getName(), null, null, null, systemProperties ) ); } private TestsToRun scanClassPath() diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java index 1b23322..7ee787e 100644 --- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java +++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/PojoTestSet.java @@ -116,7 +116,7 @@ public class PojoTestSet final String userFriendlyMethodName = methodName + '(' + ( args.length == 0 ? "" : "Reporter" ) + ')'; final String testName = getTestName( userFriendlyMethodName ); - reportManager.testStarting( new SimpleReportEntry( testClassName, testName ) ); + reportManager.testStarting( new SimpleReportEntry( testClassName, null, testName, null ) ); try { @@ -125,7 +125,7 @@ public class PojoTestSet catch ( Throwable e ) { StackTraceWriter stackTraceWriter = new LegacyPojoStackTraceWriter( testClassName, methodName, e ); - reportManager.testFailed( withException( testClassName, testName, stackTraceWriter ) ); + reportManager.testFailed( withException( testClassName, null, testName, null, stackTraceWriter ) ); // A return value of true indicates to this class's executeTestMethods // method that it should abort and not attempt to execute @@ -139,20 +139,20 @@ public class PojoTestSet try { method.invoke( testObject, args ); - reportManager.testSucceeded( new SimpleReportEntry( testClassName, testName ) ); + reportManager.testSucceeded( new SimpleReportEntry( testClassName, null, testName, null ) ); } catch ( InvocationTargetException e ) { Throwable t = e.getTargetException(); StackTraceWriter stackTraceWriter = new LegacyPojoStackTraceWriter( testClassName, methodName, t ); - reportManager.testFailed( withException( testClassName, testName, stackTraceWriter ) ); + reportManager.testFailed( withException( testClassName, null, testName, null, stackTraceWriter ) ); // Don't return here, because tearDownFixture should be called even // if the test method throws an exception. } catch ( Throwable t ) { StackTraceWriter stackTraceWriter = new LegacyPojoStackTraceWriter( testClassName, methodName, t ); - reportManager.testFailed( withException( testClassName, testName, stackTraceWriter ) ); + reportManager.testFailed( withException( testClassName, null, testName, null, stackTraceWriter ) ); // Don't return here, because tearDownFixture should be called even // if the test method throws an exception. } @@ -165,7 +165,7 @@ public class PojoTestSet { StackTraceWriter stackTraceWriter = new LegacyPojoStackTraceWriter( testClassName, methodName, t ); // Treat any exception from tearDownFixture as a failure of the test. - reportManager.testFailed( withException( testClassName, testName, stackTraceWriter ) ); + reportManager.testFailed( withException( testClassName, null, testName, null, stackTraceWriter ) ); // A return value of true indicates to this class's executeTestMethods // method that it should abort and not attempt to execute diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java index e5d2232..db0563a 100644 --- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java +++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/TestListenerInvocationHandler.java @@ -217,12 +217,12 @@ public class TestListenerInvocationHandler String className = extractClassName( description ); String methodName = extractMethodName( description ); StackTraceWriter stackTraceWriter = toStackTraceWriter( args ); - return withException( className, methodName, stackTraceWriter ); + return withException( className, null, methodName, null, stackTraceWriter ); } private static SimpleReportEntry createStartEndReportEntry( Object[] args ) { String description = args[0].toString(); - return new SimpleReportEntry( extractClassName( description ), extractMethodName( description ) ); + return new SimpleReportEntry( extractClassName( description ), null, extractMethodName( description ), null ); } } diff --git a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java index f64b93d..b964933 100644 --- a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java +++ b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java @@ -231,7 +231,7 @@ public class JUnit4Provider private void executeTestSet( Class<?> clazz, RunListener reporter, Notifier notifier ) { - final SimpleReportEntry report = new SimpleReportEntry( clazz.getName(), null, systemProps() ); + final SimpleReportEntry report = new SimpleReportEntry( clazz.getName(), null, null, null, systemProps() ); reporter.testSetStarting( report ); try { @@ -250,7 +250,7 @@ public class JUnit4Provider String reportName = report.getName(); String reportSourceName = report.getSourceName(); PojoStackTraceWriter stackWriter = new PojoStackTraceWriter( reportSourceName, reportName, e ); - reporter.testError( withException( reportSourceName, reportName, stackWriter ) ); + reporter.testError( withException( reportSourceName, null, reportName, null, stackWriter ) ); } } finally diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java index 4aaf1c8..135ba4e 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java @@ -65,13 +65,13 @@ public class NonConcurrentRunListener protected SimpleReportEntry createReportEntry( Description description ) { ClassMethod classMethod = toClassMethod( description ); - return new SimpleReportEntry( classMethod.getClazz(), classMethod.getMethod() ); + return new SimpleReportEntry( classMethod.getClazz(), null, classMethod.getMethod(), null ); } private TestSetReportEntry createReportEntryForTestSet( Description description, Map<String, String> systemProps ) { ClassMethod classMethod = toClassMethod( description ); - return new SimpleReportEntry( classMethod.getClazz(), classMethod.getClazz(), systemProps ); + return new SimpleReportEntry( classMethod.getClazz(), null, null, null, systemProps ); } private TestSetReportEntry createTestSetReportEntryStarted( Description description ) diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java index e710cda..0ffcbe3 100644 --- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java +++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java @@ -120,7 +120,7 @@ public class TestSet private TestSetReportEntry createReportEntry( Integer elapsed, Map<String, String> systemProps ) { - return new SimpleReportEntry( testClassName, testClassName, null, elapsed, systemProps ); + return new SimpleReportEntry( testClassName, null, testClassName, null, null, elapsed, systemProps ); } public void incrementTestMethodCount() diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java index cb50358..d2e1395 100644 --- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java +++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/TestMethodTest.java @@ -32,7 +32,7 @@ public class TestMethodTest { public void testTestFailure() { - ReportEntry reportEntry = new SimpleReportEntry( "a", "b" ); + ReportEntry reportEntry = new SimpleReportEntry( "a", null, "b", null ); TestMethod testMethod = new TestMethod( reportEntry, new TestSet( TestMethodTest.class.getName() ) ); testMethod.testFailure( reportEntry ); final int elapsed = testMethod.getElapsed(); diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java index 8cb7641..83c9d2b 100644 --- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java +++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGReporter.java @@ -73,7 +73,7 @@ public class TestNGReporter @Override public void onTestSuccess( ITestResult result ) { - ReportEntry report = new SimpleReportEntry( result.getTestClass().getName(), result.getName() ); + ReportEntry report = new SimpleReportEntry( result.getTestClass().getName(), null, result.getName(), null ); reporter.testSucceeded( report ); } @@ -81,7 +81,7 @@ public class TestNGReporter public void onTestFailure( ITestResult result ) { IClass clazz = result.getTestClass(); - ReportEntry report = withException( clazz.getName(), result.getName(), + ReportEntry report = withException( clazz.getName(), null, result.getName(), null, new PojoStackTraceWriter( clazz.getRealClass().getName(), result.getMethod().getMethodName(), result.getThrowable() ) ); @@ -92,9 +92,10 @@ public class TestNGReporter @Override public void onTestSkipped( ITestResult result ) { + //noinspection ThrowableResultOfMethodCallIgnored Throwable t = result.getThrowable(); String reason = t == null ? null : t.getMessage(); - ReportEntry report = ignored( result.getTestClass().getName(), result.getName(), reason ); + ReportEntry report = ignored( result.getTestClass().getName(), null, result.getName(), null, reason ); reporter.testSkipped( report ); } @@ -102,7 +103,7 @@ public class TestNGReporter public void onTestFailedButWithinSuccessPercentage( ITestResult result ) { IClass clazz = result.getTestClass(); - ReportEntry report = withException( clazz.getName(), result.getName(), + ReportEntry report = withException( clazz.getName(), null, result.getName(), null, new PojoStackTraceWriter( clazz.getRealClass().getName(), result.getMethod().getMethodName(), result.getThrowable() ) ); diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java index ffd13ae..27f46be 100644 --- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java +++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestSuite.java @@ -43,7 +43,7 @@ abstract class TestSuite final void startTestSuite( RunListener reporterManager ) { - TestSetReportEntry report = new SimpleReportEntry( getSuiteName(), null ); + TestSetReportEntry report = new SimpleReportEntry( getSuiteName(), null, null, null ); try { @@ -57,7 +57,7 @@ abstract class TestSuite final void finishTestSuite( RunListener reporterManager ) { - SimpleReportEntry report = new SimpleReportEntry( getSuiteName(), null, systemProps() ); + SimpleReportEntry report = new SimpleReportEntry( getSuiteName(), null, null, null, systemProps() ); reporterManager.testSetCompleted( report ); } }
