Class ExpectFailure
- All Implemented Interfaces:
Platform.JUnitTestRule
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 interfaceA "functional interface" forexpectFailureAbout()to invoke and capture failures.static interfaceA "functional interface" forexpectFailure()to invoke and capture failures. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate AssertionErrorprivate booleanprivate booleanprivate final FailureStrategy -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.junit.runners.model.Statementapply(org.junit.runners.model.Statement base, org.junit.runner.Description description) static TruthFailureSubjectassertThat(AssertionError actual) Creates a subject for asserting about the givenAssertionError, usually one produced by Truth.private voidcaptureFailure(AssertionError captured) Captures the provided failure, or throws anAssertionErrorif a failure had previously been captured.(package private) voidEnsures a failure is caught if it's expected (i.e.,whenTesting()is called) and throws error if not.(package private) voidEnters rule context to be ready to capture failures.static AssertionErrorexpectFailure(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) voidLeaves 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
ExpectFailuresupports only onewhenTestingcall 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 anAssertionErrorif 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)
-