package org.junit.internal.matchers; import static org.hamcrest.CoreMatchers.any; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.internal.matchers.StacktracePrintingMatcher.isException; import static org.junit.internal.matchers.StacktracePrintingMatcher.isThrowable; import org.junit.Test; public class StacktracePrintingMatcherTest { @Test public void succeedsWhenInnerMatcherSucceeds() throws Exception { assertTrue(isThrowable(any(Throwable.class)).matches(new Exception())); } @Test public void failsWhenInnerMatcherFails() throws Exception { assertFalse(isException(notNullValue(Exception.class)).matches(null)); } @Test public void assertThatIncludesStacktrace() { Exception actual = new IllegalArgumentException("my message"); Exception expected = new NullPointerException(); try { assertThat(actual, isThrowable(equalTo(expected))); } catch (AssertionError e) { assertThat(e.getMessage(), containsString("Stacktrace was: java.lang.IllegalArgumentException: my message")); } } }