Following suggestion by @sf105
StacktracePrintingMatcher delegates to a Matcher<Throwable> and in addition appends the stacktrace of the actual item in case of a mismatch. It is used inside ExpectedExceptionMatcher and can also be used separately when matching Throwables by calling `assertThat(actual, withStacktrace(throwableMatcher)`. assertThat no longer sets the cause of the AssertionError. CauseMatcher has been removed.
ExpectedExceptionMatcher now collects all the matchers and internally provides custom matchers for checking the message and the cause of an exception.
Conflicts: src/main/java/org/junit/Assert.java src/main/java/org/junit/matchers/JUnitMatchers.java src/main/java/org/junit/rules/ExpectedException.java src/test/java/org/junit/tests/experimental/rules/ExpectedExceptionTest.java
…sumptionViolatedExceptions see https://github.com/KentBeck/junit/issues/296 The solution introduced breaks with the general concept of the TestWatcher which is to call a tracing method for any state the test reaches. This commit introduces a new method skipped() to the TestWatcher. Quirk: The AssumptionViolatedException is in package "internal".
…s been made