JUnit 4.10 is released

David Saff <[email protected]> Thu, 29 Sep 2011 15:45:23 -0400
Newsgroups gmane.comp.java.junit.user,gmane.comp.java.junit.devel
Message-ID <CACj8BuMzhv7iA2iDE3rCHjERF71T=u_WxgxRtWhVGbTPF+i+zQ@mail.gmail.com>
All,

JUnit 4.10 has been released.  It fixes a bug in packaging that
affected maven users who use up-to-date versions of hamcrest.  Thanks
to the efforts of a full cast of contributors, it also contains a
couple dozen new features and bugfixes.

The github model is working well as a way of maintaining JUnit as a
community.  If you've been waiting to jump in and fix that bug, now
may be the time.

As usual, you can download directly from
https://github.com/KentBeck/junit/downloads.  In addition, the jars
should already be up at Maven Central, assuming I've done it right
this time.

Release notes are at
https://github.com/KentBeck/junit/blob/4.10/doc/ReleaseNotes4.10.txt,
and copied below.

Thanks all, and keep it green,

   David Saff



## Summary of Changes in version 4.10 ##

Thanks to a full cast of contributors of bug fixes and new features.

A full summary of commits between 4.9 and 4.10 is on
[github](https://github.com/KentBeck/junit/compare/r4.9...4.10)

### junit-dep has correct contents ###

junit-dep-4.9.jar incorrectly contained hamcrest classes, which could
lead to version conflicts in projects that depend on hamcrest
directly.  This is fixed in 4.10 [@dsaff, closing gh-309]

### RuleChain ###

The RuleChain rule allows ordering of TestRules:

    public static class UseRuleChain {
    	@Rule
    	public TestRule chain= RuleChain
    	                       .outerRule(new LoggingRule("outer rule")
    	                       .around(new LoggingRule("middle rule")
    	                       .around(new LoggingRule("inner rule");

    	@Test
    	public void example() {
    		assertTrue(true);
    	}
    }

writes the log

    starting outer rule
    starting middle rule
    starting inner rule
    finished inner rule
    finished middle rule
    finished outer rule

### TemporaryFolder ###

- `TemporaryFolder#newFolder(String... folderNames)` creates
recursively deep temporary folders
  [@rodolfoliviero, closing gh-283]
- `TemporaryFolder#newFile()` creates a randomly named new file, and
`#newFolder()` creates a randomly named new folder
  [@Daniel Rothmaler, closing gh-299]

### Theories ###

The `Theories` runner does not anticipate theory parameters that have generic
types, as reported by github#64.  Fixing this won't happen until `Theories` is
moved to junit-contrib. In anticipation of this, 4.9.1 adds some of the
necessary machinery to the runner classes, and deprecates a method that only
the `Theories` runner uses, `FrameworkMethod`#producesType().
The Common Public License that JUnit is released under is now included
in the source repository.

Thanks to `@pholser` for identifying a potential resolution for github#64
and initiating work on it.

### Bug fixes ###

- Built-in Rules implementations
  - TemporaryFolder should not create files in the current working
directory if applying the rule fails
    [@orfjackal, fixing gh-278]
  - TestWatcher and TestWatchman should not call failed for
AssumptionViolatedExceptions
    [@stefanbirkner, fixing gh-296]
- Javadoc bugs
  - Assert documentation [@stefanbirkner, fixing gh-134]
  - ClassRule [@stefanbirkner, fixing gh-254]
  - Parameterized  [@stefanbirkner, fixing gh-89]
  - Parameterized, again [@orfjackal, fixing gh-285]
- Miscellaneous
  - Useless code in RunAfters [@stefanbirkner, fixing gh-289]
  - Parameterized test classes should be able to have `@Category` annotations
    [@dsaff, fixing gh-291]
  - Error count should be initialized in
junit.tests.framework.TestListenerTest [@stefanbirkner, fixing gh-225]
  - AssertionFailedError constructor shouldn't call super with null
message [@stefanbirkner, fixing gh-318]
  - Clearer error message for non-static inner test classes
[@stefanbirkner, fixing gh-42]

### Minor changes ###

- Description, Result and Failure are Serializable [@ephox-rob, closing gh-101]
- FailOnTimeout is reusable, allowing for retrying Rules
[@stefanbirkner, closing gh-265]
- New `ErrorCollector.checkThat` overload, that allows you to specify
a reason [@drothmaler, closing gh-300]


------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/junit/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/junit/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/