[ 
https://issues.apache.org/jira/browse/LUCENE-3762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13204372#comment-13204372
 ] 

Dawid Weiss commented on LUCENE-3762:
-------------------------------------

There are functional differences between TestWatcher (before) and TestWatchman 
(current) -- assumptions are no longer propagated as failures and the code in 
LTC.intercept() no longer applies:

{code}
    protected void failed(Throwable e, Description description) {
      // org.junit.internal.AssumptionViolatedException in older releases
      // org.junit.Assume.AssumptionViolatedException in recent ones
      if (e.getClass().getName().endsWith("AssumptionViolatedException")) {
        if (e.getCause() instanceof _TestIgnoredException)
{code}

I'll write tests to cover these and rewrite the interceptor explicitly as a 
@Rule so that we don't rely on JUnit's implementation with regard as to what is 
considered what.


                
> Upgrade JUnit to 4.10, refactor state-machine of detecting setUp/tearDown 
> call chaining.
> ----------------------------------------------------------------------------------------
>
>                 Key: LUCENE-3762
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3762
>             Project: Lucene - Java
>          Issue Type: Improvement
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>            Priority: Trivial
>             Fix For: 3.6, 4.0
>
>         Attachments: LUCENE-3762.patch
>
>
> Both Lucene and Solr use JUnit 4.7. I suggest we move forward and upgrade to 
> JUnit 4.10 which provides several infrastructural changes (serializable 
> Description objects, class-level rules, various tweaks). JUnit 4.10 also 
> changes (or fixes, depends how you look at it) the order in which 
> @Before/@After hooks and @Rules are applied. This makes the old state-machine 
> in LuceneTestCase fail (because the order is changed).
> I rewrote the state machine and used a different, I think simpler, although 
> Uwe may disagree :), mechanism in which the hook methods setUp/ tearDown are 
> still there, but they are empty at the top level and serve only to detect 
> whether subclasses chain super.setUp/tearDown properly (if they override 
> anything).
> In the long term, I would love to just get rid of public setup/teardown 
> methods and make them private (so that they cannot be overriden or even seen 
> by subclasses) but this will require changes to the runner itself.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to