Pull request #1687: Mark ThreadGroups created by FailOnTimeout as daemon groups
In JUnit 4.13 (pull request #1517) an attempt was
made to fix leakage of the ThreadGroup
instances created when a test is run with a timeout. That
change explicitly destroyed the ThreadGroup
that was created for the time-limited test. Numerous
people reported problems that were caused by explicitly destroying the ThreadGroup
.
In this change, the code was updated to call ThreadGroup.setDaemon(true)
instead of destroying the
ThreadGroup.
Pull request $1691: Only create ThreadGroups if FailOnTimeout.lookForStuckThread is true.
In JUnit 4.12 (pull request #742) the Timeout
Rule was updated to optionally display the stacktrace of the thread that appears to be stuck
(enabled on an opt-in basis by passing true
to Timeout.Builder.lookForStuckThread(boolean)
).
When that change was made, time-limited tests were changed to start the new thread in a new
ThreadGroup
, even if the test did not call lookForStuckThread()
. This subtle change in
behavior resulted in visible behavior changes to some tests (for example, tests of code that uses
java.beans.ThreadGroupContext
).
In this change, the code is updated to only create a new ThreadGroup
if the caller calls
Timeout.Builder.lookForStuckThread(true)
. Tests with timeouts that do not make this call will
behave as they did in JUnit 4.11 (and more similar to tests that do not have a timeout). This
unfortunately could result in visible changes of tests written or updated since the 4.12
release. If this change adversely affects your tests, you can create the Timeout
rule via the
builder and call Timeout.Builder.lookForStuckThread(true)
.
Pull request #1654: Fix for issue #1192: NotSerializableException with AssumptionViolatedException
This change fixes an issue where AssumptionViolatedException
instances could not be serialized
if they were created with a constructor that takes in an org.hamcrest.Matcher
instance (these
constructors are used if you use one of the assumeThat()
methods in org.junit.Assume
).