public class ExpectedException extends Object implements TestRule
// These tests all pass. public static class HasExpectedException { @Rule public ExpectedException thrown= ExpectedException.none(); @Test public void throwsNothing() { // no exception expected, none thrown: passes. } @Test public void throwsNullPointerException() { thrown.expect(NullPointerException.class); throw new NullPointerException(); } @Test public void throwsNullPointerExceptionWithMessage() { thrown.expect(NullPointerException.class); thrown.expectMessage("happened?"); thrown.expectMessage(startsWith("What")); throw new NullPointerException("What happened?"); } @Test public void throwsIllegalArgumentExceptionWithMessageAndCause() { NullPointerException expectedCause = new NullPointerException(); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("What"); thrown.expectCause(is(expectedCause)); throw new IllegalArgumentException("What happened?", cause); } }By default ExpectedException rule doesn't handle AssertionErrors and AssumptionViolatedExceptions, because such exceptions are used by JUnit. If you want to handle such exceptions you have to call @link
handleAssertionErrors()
or @link
handleAssumptionViolatedExceptions()
.
// These tests all pass. public static class HasExpectedException { @Rule public ExpectedException thrown= ExpectedException.none(); @Test public void throwExpectedAssertionError() { thrown.handleAssertionErrors(); thrown.expect(AssertionError.class); throw new AssertionError(); } @Test public void throwExpectAssumptionViolatedException() { thrown.handleAssumptionViolatedExceptions(); thrown.expect(AssumptionViolatedException.class); throw new AssumptionViolatedException(""); } }
Modifier and Type | Method and Description |
---|---|
Statement |
apply(Statement base,
Description description)
Modifies the method-running
Statement to implement this
test-running rule. |
void |
expect(Class<? extends Throwable> type)
Adds to the list of requirements for any thrown exception that it should
be an instance of
type |
void |
expect(Matcher<?> matcher)
Adds
matcher to the list of requirements for any thrown
exception. |
void |
expectCause(Matcher<? extends Throwable> expectedCause)
Adds
matcher to the list of requirements for the cause of
any thrown exception. |
void |
expectMessage(Matcher<String> matcher)
Adds
matcher to the list of requirements for the message returned
from any thrown exception. |
void |
expectMessage(String substring)
Adds to the list of requirements for any thrown exception that it should
contain string
substring |
ExpectedException |
handleAssertionErrors() |
ExpectedException |
handleAssumptionViolatedExceptions() |
static ExpectedException |
none() |
public static ExpectedException none()
public ExpectedException handleAssertionErrors()
public ExpectedException handleAssumptionViolatedExceptions()
public Statement apply(Statement base, Description description)
TestRule
Statement
to implement this
test-running rule.apply
in interface TestRule
base
- The Statement
to be modifieddescription
- A Description
of the test implemented in base
base
,
a wrapper around base
, or a completely new Statement.public void expect(Matcher<?> matcher)
matcher
to the list of requirements for any thrown
exception.public void expect(Class<? extends Throwable> type)
type
public void expectMessage(String substring)
substring
public void expectMessage(Matcher<String> matcher)
matcher
to the list of requirements for the message returned
from any thrown exception.