public class AssertionsForInterfaceTypes extends AssertionsForClassTypes
For example:
int removed = employees.removeFired();
assertThat
(removed).isZero
();
List<Employee> newEmployees = employees.hired(TODAY);
assertThat
(newEmployees).hasSize
(6);
Java 8 is picky when choosing the right assertThat
method if the object under test is generic and bounded,
for example if foo is instance of T that extends Exception, java 8 will complain that it can't resolve
the proper assertThat
method (normally assertThat(Throwable)
as foo might implement an interface like List,
if that occurred assertThat(List)
would also be a possible choice - thus confusing java 8.
This why Assertions
have been split in AssertionsForClassTypes
and AssertionsForInterfaceTypes
(see http://stackoverflow.com/questions/29499847/ambiguous-method-in-java-8-why).
Modifier | Constructor and Description |
---|---|
protected |
AssertionsForInterfaceTypes()
Creates a new
Assertions . |
Modifier and Type | Method and Description |
---|---|
static <T> T |
assertThat(AssertProvider<T> component)
Delegates the creation of the
Assert to the AssertProvider.assertThat() of the given component. |
static AbstractCharSequenceAssert<?,? extends CharSequence> |
assertThat(CharSequence actual)
Creates a new instance of
. |
static <T> AbstractIterableAssert<?,? extends Iterable<? extends T>,T> |
assertThat(Iterable<? extends T> actual)
Creates a new instance of
. |
static <T> AbstractIterableAssert<?,? extends Iterable<? extends T>,T> |
assertThat(Iterator<? extends T> actual)
Creates a new instance of
. |
static <T> AbstractListAssert<?,? extends List<? extends T>,T> |
assertThat(List<? extends T> actual)
Creates a new instance of
. |
static <K,V> MapAssert<K,V> |
assertThat(Map<K,V> actual)
Creates a new instance of
. |
static AbstractPathAssert<?> |
assertThat(Path actual)
Creates a new instance of
PathAssert |
static <T> AbstractListAssert<?,? extends List<? extends T>,T> |
assertThat(Stream<? extends T> actual)
Creates a new instance of
from the given Stream . |
static <T extends Comparable<? super T>> |
assertThat(T actual)
Creates a new instance of
with
standard comparison semantics. |
static <T extends AssertDelegateTarget> |
assertThat(T assertion)
Returns the given assertion.
|
allOf, allOf, anyOf, anyOf, assertThatExceptionOfType, assertThatThrownBy, atIndex, catchThrowable, contentOf, contentOf, contentOf, contentOf, contentOf, contentOf, doesNotHave, entry, extractProperty, extractProperty, fail, fail, failBecauseExceptionWasNotThrown, filter, filter, in, linesOf, linesOf, linesOf, linesOf, linesOf, linesOf, not, not, notIn, offset, offset, registerCustomDateFormat, registerCustomDateFormat, setAllowComparingPrivateFields, setAllowExtractingPrivateFields, setLenientDateParsing, setMaxLengthForSingleLineDescription, setRemoveAssertJRelatedElementsFromStackTrace, shouldHaveThrown, tuple, useDefaultDateFormatsOnly, within, within, within, within, within, within, within, withinPercentage, withinPercentage, withinPercentage
protected AssertionsForInterfaceTypes()
Assertions
.public static <T> T assertThat(AssertProvider<T> component)
Assert
to the AssertProvider.assertThat()
of the given component.
Read the comments on AssertProvider
for an example of its usage.
component
- the component that creates its own assertAssert
of the given componentpublic static AbstractCharSequenceAssert<?,? extends CharSequence> assertThat(CharSequence actual)
CharSequenceAssert
.actual
- the actual value.public static <T> AbstractIterableAssert<?,? extends Iterable<? extends T>,T> assertThat(Iterable<? extends T> actual)
IterableAssert
.actual
- the actual value.public static <T> AbstractIterableAssert<?,? extends Iterable<? extends T>,T> assertThat(Iterator<? extends T> actual)
IterableAssert
.
Be aware that calls to most methods on returned IterableAssert will consume Iterator so it won't be possible to
iterate over it again. Calling multiple methods on returned IterableAssert is safe as Iterator's elements are
cached by IterableAssert first time Iterator is consumed.actual
- the actual value.public static <T> AbstractListAssert<?,? extends List<? extends T>,T> assertThat(List<? extends T> actual)
ListAssert
.actual
- the actual value.public static <T> AbstractListAssert<?,? extends List<? extends T>,T> assertThat(Stream<? extends T> actual)
ListAssert
from the given Stream
.
Be aware that to create the returned ListAssert
the given the Stream
is consumed so it won't be
possible to use it again. Calling multiple methods on the returned ListAssert
is safe as it only
interacts with the List
built from the Stream
.actual
- the actual Stream
value.public static AbstractPathAssert<?> assertThat(Path actual)
PathAssert
actual
- the path to testpublic static <K,V> MapAssert<K,V> assertThat(Map<K,V> actual)
MapAssert
.
Returned type is MapAssert
as it overrides method to annotate them with SafeVarargs
avoiding
annoying warnings.
actual
- the actual value.public static <T extends Comparable<? super T>> AbstractComparableAssert<?,T> assertThat(T actual)
GenericComparableAssert
with
standard comparison semantics.actual
- the actual value.public static <T extends AssertDelegateTarget> T assertThat(T assertion)
assertThat
.
Consider for example the following MyButton and MyButtonAssert classes:
public class MyButton extends JButton {
private boolean blinking;
public boolean isBlinking() { return this.blinking; }
public void setBlinking(boolean blink) { this.blinking = blink; }
}
private static class MyButtonAssert implements AssertDelegateTarget {
private MyButton button;
MyButtonAssert(MyButton button) { this.button = button; }
void isBlinking() {
// standard assertion from core Assertions.assertThat
assertThat(button.isBlinking()).isTrue();
}
void isNotBlinking() {
// standard assertion from core Assertions.assertThat
assertThat(button.isBlinking()).isFalse();
}
}
As MyButtonAssert implements AssertDelegateTarget, you can use assertThat(buttonAssert).isBlinking();
instead of buttonAssert.isBlinking();
to have easier to read assertions:
@Test
public void AssertDelegateTarget_example() {
MyButton button = new MyButton();
MyButtonAssert buttonAssert = new MyButtonAssert(button);
// you can encapsulate MyButtonAssert assertions methods within assertThat
assertThat(buttonAssert).isNotBlinking(); // same as : buttonAssert.isNotBlinking();
button.setBlinking(true);
assertThat(buttonAssert).isBlinking(); // same as : buttonAssert.isBlinking();
}
T
- the generic type of the user-defined assert.assertion
- the assertion to return.Copyright © 2014–2016 AssertJ. All rights reserved.