[ 
http://jira.codehaus.org/browse/SUREFIRE-629?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kristian Rosenvold updated SUREFIRE-629:
----------------------------------------

    Component/s:     (was: Junit 4.x support)
                 Junit 4.7+ (parallel) support

> 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.7+ (parallel) support
>    Affects Versions: 2.5
>         Environment: Maven Surefire 2.5
> Surefire JUnit 4.7
>            Reporter: Aslak Knutsen
>            Assignee: Kristian Rosenvold
>            Priority: Critical
>             Fix For: 2.6
>
>         Attachments: MavenSurefireJUnit47RunnerTestCase.java, 
> MavenSurefireJUnit47RunnerTestCase.java
>
>
> 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

        

Reply via email to