Re: Re: JUnit 4.12-beta-1 is released

"David Saff [email protected] [junit]" <[email protected]> Mon, 11 Aug 2014 13:33:05 -0400
Newsgroups gmane.comp.java.junit.user
Message-ID <CALrw-PyYMu_3+3yNirOcuSQEGuOJQ7_AY9wFwgwJewL0=fk-7w@mail.gmail.com>
Henrik,

For JUnit4ClassRunner, it may be easiest to boil down to a particular
example.  Would you mind choosing one third-party runner that currently
extends JUnit4ClassRunner, so that we can see how this choice affects users
of that library?

   David Saff


On Mon, Aug 4, 2014 at 6:40 AM, [email protected] [junit] <
[email protected]> wrote:

>
>
> Hello
>
> I am sorry for trashing the party but I have a couple of concerns that are
> very likely to slow down the adoption of JUnit-4.12 among the providers of
> 3rd-party tools ...
>
>  --- 1) Don't remove JUnit4ClassRunner! (in package
> org.junit.internal.runners)
>
> I have developed a number of 3rd-party runnners myself and I want the
> JUnit community to know that as a 3rd-party runner developer you want the
> latest version of your runner to work with any version of JUnit! -
> Otherwise the end-users (test-developers) will be less likely to start
> using your runner because they probably don't want to deal with the
> version-conflict hell that might raise between JUnit and your 3rd-party
> runner.
>
> A couple of good examples are the 3rd-party runners MockitoJUnitRunner
> (from Mockito - http://mockito.org) and CallbackParamsRunner (from
> CallbackParams - http://callbackparams.org)
>
> Both runner implementations extends JUnits Runner base-class. They both
> work as thin wrappers that hand over the main part of the test-execution to
> whichever JUnit-runner is appropriate for the JUnit-version on classpath,
> while they stay in the background ensuring that their intended features are
> magically appended on the test-execution with whichever extension points
> are appropriate for the JUnit-version at hand.
>
> In this manner the runners will work with JUnit-4.4 (or even older
> versions) but they will also work fine with later JUnit-versions, therewith
> allowing their end-users to upgrade JUnit separatly in order to also
> benefit from new JUnit-features (such as JUnit-rules etc).
>
> Now I do think that both of these runners will run just fine with
> JUnit-4.12-beta-1 but their builds would fail the day they decide to
> upgrade their JUnit dependency (e.g. if they want to leverage from some new
> JUnit feature in 4.12). - So in the end this will slow down the adoption of
> 4.12 in these 3rd-party projects because an upgrade would force their
> communities to extra efforts in order to preserve their
> backward-compatibility to older JUnit-version (such as 4.4).
>
>  --- 2) Please remove pull-request #625 from the release! (The annotation
> @RunListener.ThreadSafe)
>
> I think this pull-request represents a very poor design choice that - at
> best - might help performance only for JUnit runners that executes their
> tests with concurrent threads. I would like to point out that most smaller
> unit-tests do not!! - but they still suffer from the same RunListener
> slowness that this issue is supposed to address ...
>
> A much better solution that would be generally beneficial to all types of
> JUnit runners would be to offer RunListener implementors some sort of
> concurrency API that allows RunListener implementations to use
> assynchronous execution of the parts that might take a long time. - That
> way it would be possible for all runners to seamlessly benefit from
> RunListeners that have clever assynchronous concurrency features!!
>
> I can discuss this RunListener stuff forever but I don't really have the
> time - so I invite other clever people to join the discussion ...
>
> ---
> BR /Henrik Kaipe
>  
>