Package com.google.common.truth
Class ExpectFailure
- java.lang.Object
-
- com.google.common.truth.ExpectFailure
-
- All Implemented Interfaces:
TestRule
public final class ExpectFailure extends Object
A utility for testing that assertions against a customSubjectfail when they should, plus a utility to assert about parts of the resulting failure messages.Usage:
AssertionError e = expectFailure(whenTesting -> whenTesting.that(cancelButton).isVisible()); assertThat(e).factKeys().containsExactly("expected to be visible"); ... private static AssertionError expectFailure( SimpleSubjectBuilderCallback<UiElementSubject, UiElement> assertionCallback) { return expectFailureAbout(uiElements(), assertionCallback); }ExpectFailurealso supports a legacy approach, which we no longer recommend now that all Truth users can use lambdas. That approach is based on the JUnit@Rulesystem:@Rule public final ExpectFailure expectFailure = new ExpectFailure();... expectFailure.whenTesting().about(uiElements()).that(cancelButton).isVisible(); assertThat(expectFailure.getFailure()).factKeys().containsExactly("expected to be visible");ExpectFailureis similar to JUnit'sassertThrows(JUnit 4, JUnit 5). We recommend it overassertThrowswhen you're testing a Truth subject because:- It performs additional checks:
- It checks that the assertion you're testing uses the supplied
FailureStrategy. - It checks that the assertion you're testing calls
FailureStrategy.fail(java.lang.AssertionError)only once.
- It checks that the assertion you're testing uses the supplied
- It instructs Truth to generate failure messages without adding lines like "value of:
foo()" for
assertThat(foo())....calls that it detects in the test bytecode. Truth doesn't provide guarantees for when such lines will be generated, so tests become more resilient without them.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceExpectFailure.SimpleSubjectBuilderCallback<S extends Subject,A>A functional interface forexpectFailureAbout()to invoke and capture failures.static interfaceExpectFailure.StandardSubjectBuilderCallbackA functional interface forexpectFailure()to invoke and capture failures.
-
Constructor Summary
Constructors Constructor Description ExpectFailure()Creates a new instance for use as a@Rule.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Statementapply(Statement base, Description description)static TruthFailureSubjectassertThat(@Nullable AssertionError actual)Creates a subject for asserting about the givenAssertionError, usually one produced by Truth.static AssertionErrorexpectFailure(ExpectFailure.StandardSubjectBuilderCallback assertionCallback)Captures and returns the failure produced by the assertion in the provided callback, similar toassertThrows():static <S extends Subject,A>
AssertionErrorexpectFailureAbout(Subject.Factory<S,A> factory, ExpectFailure.SimpleSubjectBuilderCallback<S,A> assertionCallback)Captures and returns the failure produced by the assertion in the provided callback, similar toassertThrows():AssertionErrorgetFailure()Legacy method that returns the failure captured bywhenTesting(), if one occurred.StandardSubjectBuilderwhenTesting()Legacy method that returns a subject builder that expects the chained assertion to fail, and makes the failure available viagetFailure().
-
-
-
Constructor Detail
-
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 Detail
-
whenTesting
public StandardSubjectBuilder whenTesting()
Legacy method that returns a subject builder 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.
-
getFailure
public AssertionError getFailure()
Legacy method that returns the failure captured bywhenTesting(), if one occurred.
-
expectFailure
@CanIgnoreReturnValue public static AssertionError expectFailure(ExpectFailure.StandardSubjectBuilderCallback assertionCallback)
Captures and returns the failure produced by the assertion in the provided callback, similar toassertThrows():AssertionError e = expectFailure(whenTesting -> whenTesting.that(4).isNotEqualTo(4));
-
expectFailureAbout
@CanIgnoreReturnValue public static <S extends Subject,A> AssertionError expectFailureAbout(Subject.Factory<S,A> factory, ExpectFailure.SimpleSubjectBuilderCallback<S,A> assertionCallback)
Captures and returns the failure produced by the assertion in the provided callback, similar toassertThrows():AssertionError e = expectFailureAbout(myTypes(), whenTesting -> whenTesting.that(myType).hasProperty());
-
assertThat
public static TruthFailureSubject assertThat(@Nullable AssertionError actual)
Creates a subject for asserting about the givenAssertionError, usually one produced by Truth.
-
apply
@GwtIncompatible("org.junit.rules.TestRule") public Statement apply(Statement base, Description description)
-
-