[ 
https://issues.apache.org/jira/browse/DELTASPIKE-1151?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

John D. Ament closed DELTASPIKE-1151.
-------------------------------------

> CdiTestSuiteRunner.LogRunListener logs multiple times
> -----------------------------------------------------
>
>                 Key: DELTASPIKE-1151
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1151
>             Project: DeltaSpike
>          Issue Type: Bug
>          Components: TestControl
>    Affects Versions: 1.6.1
>         Environment: DeltaSpike 1.3.0 and 1.6.1
> JUnit 4.12 via maven-surefire-plugin 3.2.3
>            Reporter: Craig McIlwee
>            Assignee: Gerhard Petracek
>            Priority: Trivial
>             Fix For: 1.7.0
>
>         Attachments: duplicate_listeners.png
>
>
> This is a clone of DELTASPIKE-727.  Original text:
> {quote}
> CdiTestRunner logs the "started", "finished" and "failed"-events via 
> org.apache.deltaspike.testcontrol.api.junit.CdiTestSuiteRunner.LogRunListener.
>  Using CdiTestRunner in more than one test class leads to the repeated 
> logging of said lines, with one more duplicate per @RunWith(CdiTestRunner) 
> usage.
> I've analyzed the problem a bit: CdiTestRunner works by adding an 
> LogRunListener instance to the RunNotifier in 
> CdiTestRunner#addLogRunListener, which also keeps track of the RunNotifiers 
> that already have the Listener attached via the static notifierIdentities 
> Set, only adding the Listener if the RunNotifier isn't in the Set. The 
> problem is that notifierIdentities gets cleared in 
> CdiTestRunner.AfterClassStatement#evaluate, which leaves the Listener alone 
> and thus defeats the purpose of the Set in the first place.
> I've tried removing the notifierIdentities.clear() from evaluate which fixes 
> this issue, but I'm unsure if that's the right fix for the problem. (Writing 
> a unit test which demonstrates the issue would be easy, but I have no idea 
> how to provide a test that actually fails based on the test's log output.)
> {quote}
> I've confirmed that this is fact the case.  Will attach a screenshot showing 
> that the {{LogRunListeners}} accumulate on the same {{RunNotifier}} instance, 
> and as a result you get duplicated test start and test finish logging for 
> every log method.  This compounds per test class that uses {{CdiTestRunner}}.
> On top of that is an issue with log handlers accumulating.  {{CdiTestRunner}} 
> uses a static final {{java.util.Logger}} but every new instance will add an 
> additional {{ConsoleHandler}}.  As a result, each log statement is printed 
> multiple times.
> With these two issues, each class that is run with {{CdiTestRunner}} adds a 
> new listener and a new handler so for each class you get 2 more additional 
> log lines than with the previous class that was run.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to