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
The following commit(s) were added to refs/heads/1546-1222 by this push: new 61b8443 tests with display name 61b8443 is described below commit 61b84436e53c7cf03386ba783a622640925bd2c3 Author: tibordigana <tibordig...@apache.org> AuthorDate: Wed Apr 3 19:27:01 2019 +0200 tests with display name --- pom.xml | 6 + .../maven/surefire/report/SimpleReportEntry.java | 66 +++++--- surefire-its/pom.xml | 2 +- .../apache/maven/surefire/its/JUnitPlatformIT.java | 10 +- .../DisplayNameTest.java | 4 +- surefire-providers/surefire-junit-platform/pom.xml | 5 + .../surefire/junitplatform/RunListenerAdapter.java | 71 +++------ .../junitplatform/RunListenerAdapterTest.java | 169 ++++++++++++++------- 8 files changed, 208 insertions(+), 125 deletions(-) diff --git a/pom.xml b/pom.xml index e30a333..20e10c5 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> 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 aba9784..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 @@ -74,7 +74,7 @@ public class SimpleReportEntry this( source, sourceText, name, nameText, null, null, message, Collections.<String, String>emptyMap() ); } - protected SimpleReportEntry( String source, String sourceText, String name, String nameText, + public SimpleReportEntry( String source, String sourceText, String name, String nameText, StackTraceWriter stackTraceWriter, Integer elapsed, String message, Map<String, String> systemProperties ) { @@ -139,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; @@ -171,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 @@ -194,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; } @@ -221,33 +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() ); } - @Override - public String getNameText() + private boolean isSystemPropertiesEqual( SimpleReportEntry en ) { - return nameText; + return Objects.equals( getSystemProperties(), en.getSystemProperties() ); } - @Override - public String getSourceText() + private boolean isMessageEqual( SimpleReportEntry en ) { - return sourceText; + return Objects.equals( getMessage(), en.getMessage() ); } } diff --git a/surefire-its/pom.xml b/surefire-its/pom.xml index b1a1a43..c155694 100644 --- a/surefire-its/pom.xml +++ b/surefire-its/pom.xml @@ -169,7 +169,7 @@ <forkMode>once</forkMode> <argLine>-server -Xmx64m -XX:+UseG1GC -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Djava.awt.headless=true -Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine> <includes> - <include>org/apache/**/*IT*.java</include> + <include>org/apache/**/JUnitPlatformIT.java</include> </includes> <!-- Pass current surefire version to the main suite so that it --> <!-- can forward to all integration test projects. SUREFIRE-513 --> 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 6440f05..aeeb15a 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 @@ -39,6 +39,7 @@ public class JUnitPlatformIT public void testJupiterEngine() { unpack( "/junit-platform-engine-jupiter" ) + .setTestToRun( "Basic*Test" ) .executeTest() .verifyErrorFree( 5 ); } @@ -51,14 +52,11 @@ public class JUnitPlatformIT .verifyErrorFree( 7 ); validator.getSurefireReportsFile( "junitplatformenginejupiter.DisplayNameTest.txt" ) - // .assertContainsText( "<< ✨ >>" ) // after @DisplayName is uncommented via SUREFIRE-1222 - .assertContainsText( "Test set: junitplatformenginejupiter.DisplayNameTest" ); + .assertContainsText( "<< ✨ >>" ); 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\"" ); + .assertContainsText( "testcase name=\"73$71 ✔\" classname=\"junitplatformenginejupiter.DisplayNameTest\"" ) + .assertContainsText( "testcase name=\"73$72 ✔\" classname=\"junitplatformenginejupiter.DisplayNameTest\"" ); } @Test diff --git a/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java b/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java index 31687ea..aaaa461 100644 --- a/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java +++ b/surefire-its/src/test/resources/junit-platform-engine-jupiter/src/test/java/junitplatformenginejupiter/DisplayNameTest.java @@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -// @DisplayName("<< ✨ >>") +@DisplayName("<< ✨ >>") class DisplayNameTest { @Test @@ -35,7 +35,7 @@ class DisplayNameTest } @Test - @DisplayName("73$71 ✔") + @DisplayName("73$72 ✔") void test2() { } 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 8252dfa..3b0f363 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 @@ -74,12 +74,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 +104,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,13 +127,12 @@ final class RunListenerAdapter default: if ( isTest ) { - String[] classMethodNames = toClassMethodName( testIdentifier ); - runListener.testSucceeded( createReportEntry( classMethodNames, null, elapsed ) ); + runListener.testSucceeded( createReportEntry( testIdentifier, null, elapsed ) ); } else { runListener.testSetCompleted( - createTestSetReportEntry( testIdentifier, null, systemProps(), elapsed ) ); + createReportEntry( testIdentifier, null, systemProps(), null, elapsed ) ); } } } @@ -150,57 +149,35 @@ final class RunListenerAdapter public void executionSkipped( TestIdentifier testIdentifier, String reason ) { testStartTime.remove( testIdentifier ); - String[] classMethodName = toClassMethodName( testIdentifier ); - String className = classMethodName[0]; - String classText = classMethodName[1]; - String methodName = classMethodName[2]; - String methodText = classMethodName[3]; - runListener.testSkipped( new SimpleReportEntry( className, classText, methodName, methodText, 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]; + String methodName = testIdentifier.isTest() ? classMethodName[2] : null; + String methodText = testIdentifier.isTest() ? classMethodName[3] : null; StackTraceWriter stw = testExecutionResult == null ? null : toStackTraceWriter( className, methodName, testExecutionResult ); - return new SimpleReportEntry( className, null, methodName, null, 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 ); + 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]; - StackTraceWriter stackTraceWriter = toStackTraceWriter( realClassName, realMethodName, testExecutionResult ); - return createReportEntry( classMethodNames, stackTraceWriter, elapsedTime ); - } - - private static SimpleReportEntry createReportEntry( String[] classMethodNames, StackTraceWriter stackTraceWriter, - Integer elapsedTime ) - { - String realClassName = classMethodNames[0]; - String classText = classMethodNames[1]; - String realMethodName = classMethodNames[2]; - String methodText = classMethodNames[3]; - return new SimpleReportEntry( realClassName, classText, realMethodName, methodText, - stackTraceWriter, elapsedTime ); + return createReportEntry( testIdentifier, testExecutionResult, emptyMap(), null, elapsedTime ); } private StackTraceWriter toStackTraceWriter( String realClassName, String realMethodName, @@ -263,7 +240,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 9219502..5af1830 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; @@ -121,8 +123,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() ); + assertEquals( MyTestClass.class.getName(), entry.getSourceText() ); assertNull( entry.getStackTraceWriter() ); } @@ -137,23 +141,26 @@ 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, null, null)); + .testSetStarting( new SimpleReportEntry( className, className, null, null ) ); verifyNoMoreInteractions( listener ); adapter.executionStarted( TestIdentifier.from( child ) ); verify( listener ) - .testStarting(new SimpleReportEntry(MyTestClass.class.getName(), null, MY_TEST_METHOD_NAME, null)); + .testStarting( + new SimpleReportEntry( className, className, MY_TEST_METHOD_NAME, MY_TEST_METHOD_NAME ) ); 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().getName() ) .isEqualTo( MY_TEST_METHOD_NAME ); assertThat( report.getValue().getElapsed() ) @@ -166,7 +173,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() ) @@ -181,14 +188,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 ); @@ -200,6 +215,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(); @@ -208,53 +225,76 @@ public class RunListenerAdapterTest verifyZeroInteractions( listener ); adapter.executionStarted( TestIdentifier.from( child1 ) ); - inOrder.verify( listener ).testStarting( new SimpleReportEntry( "parent", null, "child1", null ) ); - 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", null, "child2", null ) ); - 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 @@ -271,9 +311,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", null, "engine", null)); + .testStarting( new SimpleReportEntry( "engine", "engine", "engine", "engine" ) ); verifyNoMoreInteractions( listener ); adapter.executionFinished( TestIdentifier.from( engine ), successful() ); @@ -281,12 +327,25 @@ public class RunListenerAdapterTest verify( listener ).testSucceeded( report.capture() ); assertThat( report.getValue().getSourceName() ) .isEqualTo( "engine" ); + assertThat( report.getValue().getSourceText() ) + .isEqualTo( "engine" ); assertThat( report.getValue().getName() ) .isEqualTo( "engine" ); + assertThat( report.getValue().getNameText() ) + .isEqualTo( "engine" ); 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 ); } @@ -408,21 +467,34 @@ public class RunListenerAdapterTest adapter.executionFinished( TestIdentifier.from( classDescriptor ), successful() ); + String className = MyTestClass.class.getName(); + verify( listener ) - .testSetStarting( new SimpleReportEntry( MyTestClass.class.getName(), null, null, null ) ); + .testSetStarting( new SimpleReportEntry( className, className, 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() ) + .isEqualTo( className ); 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 @@ -442,6 +514,9 @@ public class RunListenerAdapterTest ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); verify( listener ).testStarting( entryCaptor.capture() ); assertEquals( parentDisplay, entryCaptor.getValue().getSourceName() ); + assertEquals( parentDisplay, entryCaptor.getValue().getSourceText() ); + assertNull( entryCaptor.getValue().getName() ); + assertNull( entryCaptor.getValue().getNameText() ); } @Test @@ -488,22 +563,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 ); @@ -513,6 +574,8 @@ public class RunListenerAdapterTest ReportEntry value = entryCaptor.getValue(); + assertEquals( MyTestClass.class.getName(), value.getSourceName() ); + assertEquals( MyTestClass.class.getName(), value.getSourceText() ); assertEquals( "myNamedTestMethod", value.getName() ); assertEquals( "some display name", value.getNameText() ); } @@ -589,18 +652,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 ) { @@ -628,6 +679,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 { @@ -647,4 +699,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; + } + } }