Class VerboseCondition<T>
- Type Parameters:
T
- the type of object the given condition accept.
- All Implemented Interfaces:
Descriptable<Condition<T>>
Condition
that shows the value under test when the condition fails thanks to the specified objectUnderTestDescriptor
function.
When defining the objectUnderTestDescriptor
function, you should take in consideration whether the condition is going to be used
with is(Condition)
or has(Condition)
since the start of the error message is different between the two.
Let's see how it works with an example that works well with is(Condition)
:
Condition<String> shorterThan4 = VerboseCondition.verboseCondition(actual -> actual.length() < 4,
// predicate description
"shorter than 4",
// value under test description transformation function
s -> String.format(" but length was %s", s.length(), s));
If we execute:
assertThat("foooo").is(shorterThan4);
it fails with the following assertion error:
Expecting actual:
"foooo"
to be shorter than 4 but length was 5
Note that the beginning of the error message looks nice with is(Condition)
, but not so much with has(Condition)
:
Expecting actual:
"foooo"
to have shorter than 4 but length was 5
The objectUnderTestDescriptor
must not be null, if you don't need one this probably means you can simply use Condition(Predicate, String, Object...)
instead of a VerboseCondition
.
- Author:
- Stefan Bischof
-
Nested Class Summary
Nested classes/interfaces inherited from class org.assertj.core.api.Condition
Condition.Status
-
Method Summary
Modifier and TypeMethodDescriptionprotected String
buildVerboseDescription
(T objectUnderTest, boolean matches) Build the verbose condition description when applied with the actual values and the match result.boolean
Verifies that the given value satisfies this condition.static <T> VerboseCondition<T>
verboseCondition
(Predicate<T> predicate, String description, Function<T, String> objectUnderTestDescriptor) Creates a new
to have better control over the condition description when the condition fails thanks to theVerboseCondition
objectUnderTestDescriptor
function parameter.Methods inherited from class org.assertj.core.api.Condition
conditionDescriptionWithStatus, describedAs, description, status, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.assertj.core.api.Descriptable
as, as, as, describedAs
-
Method Details
-
verboseCondition
public static <T> VerboseCondition<T> verboseCondition(Predicate<T> predicate, String description, Function<T, String> objectUnderTestDescriptor) Creates a new
to have better control over the condition description when the condition fails thanks to theVerboseCondition
objectUnderTestDescriptor
function parameter.When defining the
objectUnderTestDescriptor
function, you should take in consideration whether the condition is going to be used withis(Condition)
orhas(Condition)
since the start of the error message is different between the two.Let's see how it works with an example that works well with
is(Condition)
:
If we execute:Condition<String> shorterThan4 = VerboseCondition.verboseCondition(actual -> actual.length() < 4, // predicate description "shorter than 4", // value under test description transformation function s -> String.format(" but length was %s", s.length(), s));
it fails with the following assertion error:assertThat("foooo").is(shorterThan4);
Expecting actual: "foooo" to be shorter than 4 but length was 5
Note that the beginning of the error message looks nice with
is(Condition)
, but not so much withhas(Condition)
:Expecting actual: "foooo" to have shorter than 4 but length was 5
The
objectUnderTestDescriptor
must not be null, if you don't need one this probably means you can simply useCondition(Predicate, String, Object...)
instead of aVerboseCondition
.- Type Parameters:
T
- the type of object the given condition accept.- Parameters:
predicate
- the Predicate that tests the value to test.description
- describes the Condition verbal.objectUnderTestDescriptor
- Function used to describe the value to test when the actual value does not match the predicate. must not be null.- Returns:
- the created
VerboseCondition
. - Throws:
NullPointerException
- if the predicate isnull
.NullPointerException
- if the objectUnderTestDescriptor isnull
.
-
matches
Description copied from class:Condition
Verifies that the given value satisfies this condition. -
buildVerboseDescription
Build the verbose condition description when applied with the actual values and the match result.- Parameters:
objectUnderTest
- the object to testmatches
- the result of the match operation- Returns:
- the verbose condition description.
-