public class ExpectedException extends java.lang.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(
Adds
matcher to the list of requirements for any thrown
exception. |
void |
expectCause(
Adds
matcher to the list of requirements for the cause of
any thrown exception. |
void |
expectMessage(
Adds
matcher to the list of requirements for the message returned
from any thrown exception. |
void |
expectMessage(java.lang.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
to the list of requirements for any thrown
exception.public void expectMessage(java.lang.String substring)
substring
public void expectMessage(matcher)
matcher
to the list of requirements for the message returned
from any thrown exception.public void expectCause(expectedCause)
matcher
to the list of requirements for the cause of
any thrown exception.