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#Condition(Predicate, String, Object. instead of a VerboseCondition.
| Access | Constructor and Description |
|---|---|
| private | VerboseCondition(Predicate<T> predicate, String description, Function<T, String> objectUnderTestDescriptor)
|
| Modifier and Type | Method and Description |
|---|---|
| protected String | Returns: the verbose condition description.the object to test objectUnderTest, boolean the result of the match operation matches)Build the verbose condition description when applied with the actual values and the match result. |
| public boolean | matches(T
the value to verify. objectUnderTest)Overrides org. |
| public static < the type of object the given condition accept. T> VerboseCondition | Returns: the createdVerboseCondition.the Predicate that tests the value to test. predicate, String describes the Condition verbal. description, Function<T, String> Function used to describe the value to test when the actual value does not match the predicate. must not be null. objectUnderTestDescriptor)Creates a new |
| description | back to summary |
|---|---|
| private String description | |
| objectUnderTestDescriptor | back to summary |
|---|---|
| private Function<T, String> objectUnderTestDescriptor | |
| VerboseCondition | back to summary |
|---|---|
| private VerboseCondition(Predicate<T> predicate, String description, Function<T, String> objectUnderTestDescriptor) | |
| buildVerboseDescription | back to summary |
|---|---|
| protected String buildVerboseDescription(T objectUnderTest, boolean matches) Build the verbose condition description when applied with the actual values and the match result.
| |
| matches | back to summary |
|---|---|
| public boolean matches(T objectUnderTest) Overrides org. Doc from org. Verifies that the given value satisfies this condition.
| |
| verboseCondition | back to summary |
|---|---|
| public static <T> VerboseCondition Creates a new
When defining the
Let's see how it works with an example that works well with
If we execute:
it fails with the following assertion error:
Note that the beginning of the error message looks nice with
The
| |