maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aslak Knutsen (JIRA)" <j...@codehaus.org>
Subject [jira] Created: (SUREFIRE-629) NullPointerException in DemultiplexingRunListener, falsely report of "No tests were executed!"
Date Thu, 15 Jul 2010 12:34:32 GMT
NullPointerException in DemultiplexingRunListener, falsely report of "No tests were executed!"
----------------------------------------------------------------------------------------------

                 Key: SUREFIRE-629
                 URL: http://jira.codehaus.org/browse/SUREFIRE-629
             Project: Maven Surefire
          Issue Type: Bug
          Components: Junit 4.x support
    Affects Versions: 2.5
         Environment: Maven Surefire 2.5
Surefire JUnit 4.7
            Reporter: Aslak Knutsen
            Priority: Critical


Assumption:
The DemultiplexingRunListener assumes a Test will be Started before it Fails or Finishes.
 

Reality:
JUnits ParentRunner is responsible for adding the BeforeClass/AfterClass statements to the
statement execution chain. After BeforeClass is executed, a Statement that delegates to the
abstract method: runChild(T child, RunNotifier notifier) is called. As the JavaDoc explains:
"Subclasses are responsible for making sure that relevant test events are reported through
{@code notifier}". When a @BeforeClass fail, the child that should handle the relevant test
events(Started, Failed, Finished) is never executed.

Result:
When Test Failed event is received in DemultiplexingRunListener without a Started event received
first, it causes a NullPointException because there is no ClassReporter setup for that class
yet. When this Exception is thrown from the DemultiplexingRunListene, JUnit catches the exception
and reports is as a Failed test. But to avoid a wild loop, it removes the failing Listener
before calling Failed test again. Since the DemultiplexingRunListener now is removed from
the chain it will never receive the RunFinished event and the recorded state will never be
replayed on the ReportManager.

The End result: 
ReporterManager falsely believe no Test were run.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message