Class ExpectFailure
- All Implemented Interfaces:
Platform.JUnitTestRule
,org.junit.rules.TestRule
Subject
fail when they should,
plus a utility to assert about parts of the resulting failure messages.
Usage:
AssertionError failure =
expectFailure(whenTesting -> whenTesting.that(cancelButton).isVisible());
assertThat(failure).factKeys().containsExactly("expected to be visible");
...
private static AssertionError expectFailure(
ExpectFailure.SimpleSubjectBuilderCallback<UiElementSubject, UiElement> assertionCallback) {
return ExpectFailure.expectFailureAbout(uiElements(), assertionCallback);
}
Or, if you can't use lambdas:
@Rule public final ExpectFailure expectFailure = new ExpectFailure();
... expectFailure.whenTesting().about(uiElements()).that(cancelButton).isVisible(); assertThat(failure).factKeys().containsExactly("expected to be visible");
ExpectFailure
is similar to JUnit's assertThrows
(JUnit
4, JUnit
5). We recommend it over assertThrows
when you're testing a Truth subject because it
also checks that the assertion you're testing uses the supplied FailureStrategy
and calls
FailureStrategy.fail(java.lang.AssertionError)
only once.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
A "functional interface" forexpectFailureAbout()
to invoke and capture failures.static interface
A "functional interface" forexpectFailure()
to invoke and capture failures. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate AssertionError
private boolean
private boolean
private final FailureStrategy
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.junit.runners.model.Statement
apply
(org.junit.runners.model.Statement base, org.junit.runner.Description description) static TruthFailureSubject
assertThat
(AssertionError actual) Creates a subject for asserting about the givenAssertionError
, usually one produced by Truth.private void
captureFailure
(AssertionError captured) Captures the provided failure, or throws anAssertionError
if a failure had previously been captured.(package private) void
Ensures a failure is caught if it's expected (i.e.,whenTesting()
is called) and throws error if not.(package private) void
Enters rule context to be ready to capture failures.static AssertionError
expectFailure
(ExpectFailure.StandardSubjectBuilderCallback assertionCallback) Static alternative that directly returns the triggered failure.static <S extends Subject,
A>
AssertionErrorexpectFailureAbout
(Subject.Factory<S, A> factory, ExpectFailure.SimpleSubjectBuilderCallback<S, A> assertionCallback) Static alternative that directly returns the triggered failure.Returns the captured failure, if one occurred.(package private) void
Leaves rule context and verify if a failure has been caught if it's expected.Returns a test verb that expects the chained assertion to fail, and makes the failure available viagetFailure()
.
-
Field Details
-
strategy
-
inRuleContext
private boolean inRuleContext -
failureExpected
private boolean failureExpected -
failure
-
-
Constructor Details
-
ExpectFailure
public ExpectFailure()Creates a new instance for use as a@Rule
. See the class documentation for details, and consider using the lambda version instead.
-
-
Method Details
-
whenTesting
Returns a test verb that expects the chained assertion to fail, and makes the failure available viagetFailure()
.An instance of
ExpectFailure
supports only onewhenTesting
call per test method. The staticexpectFailure(com.google.common.truth.ExpectFailure.StandardSubjectBuilderCallback)
method, by contrast, does not have this limitation. -
enterRuleContext
void enterRuleContext()Enters rule context to be ready to capture failures.This should be rarely used directly, except if this class is as a long living object but not as a JUnit rule, like truth subject tests where for GWT compatible reasons.
-
leaveRuleContext
void leaveRuleContext()Leaves rule context and verify if a failure has been caught if it's expected. -
ensureFailureCaught
void ensureFailureCaught()Ensures a failure is caught if it's expected (i.e.,whenTesting()
is called) and throws error if not. -
getFailure
Returns the captured failure, if one occurred. -
captureFailure
Captures the provided failure, or throws anAssertionError
if a failure had previously been captured. -
expectFailure
public static AssertionError expectFailure(ExpectFailure.StandardSubjectBuilderCallback assertionCallback) Static alternative that directly returns the triggered failure. This is intended to be used in Java 8+ tests similar toexpectThrows()
:AssertionError failure = expectFailure(whenTesting -> whenTesting.that(4).isNotEqualTo(4));
-
expectFailureAbout
public static <S extends Subject,A> AssertionError expectFailureAbout(Subject.Factory<S, A> factory, ExpectFailure.SimpleSubjectBuilderCallback<S, A> assertionCallback) Static alternative that directly returns the triggered failure. This is intended to be used in Java 8+ tests similar toexpectThrows()
:AssertionError failure = expectFailureAbout(myTypes(), whenTesting -> whenTesting.that(myType).hasProperty());
-
assertThat
Creates a subject for asserting about the givenAssertionError
, usually one produced by Truth. -
apply
public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement base, org.junit.runner.Description description) - Specified by:
apply
in interfaceorg.junit.rules.TestRule
-