Hamcrest

Arrays

Array

import static org.hamcrest.Matchers.array;
assertThat(new Integer[]{1,2,3}, array(equalTo(1), equalTo(2), equalTo(3)));

assertThat(new Integer[]{1,2,3}, is(array(equalTo(1), equalTo(2), equalTo(3))));

ArrayContaining

import static org.hamcrest.Matchers.arrayContaining;
assertThat(new String[]{"foo", "bar"}, arrayContaining("foo", "bar"));

// With matcher as parameter
assertThat(new String[]{"foo", "bar"}, arrayContaining(equalTo("foo"), equalTo("bar")));

// With list of matchers as parameters
List<org.hamcrest.Matcher<? super String>> matchers = new ArrayList<org.hamcrest.Matcher<? super String>>();
matchers.add(equalTo("foo"));
matchers.add(equalTo("bar"));
assertThat(new String[]{"foo", "bar"}, arrayContaining(matchers));

ArrayContainingInAnyOrder

import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder("bar", "foo"));

// With matchers as parameters
assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(equalTo("bar"), equalTo("foo")));

// With list of matchers as parameters
List<org.hamcrest.Matcher<? super String>> matchers = new ArrayList<org.hamcrest.Matcher<? super String>>();
matchers.add(equalTo("foo"));
matchers.add(equalTo("bar"));
assertThat(new String[]{"foo", "bar"}, arrayContainingInAnyOrder(matchers));

ArrayWithSize

import static org.hamcrest.Matchers.arrayWithSize;
assertThat(new String[]{"foo", "bar"}, arrayWithSize(2));

EmptyArray

import static org.hamcrest.Matchers.emptyArray;
assertThat(new String[0], emptyArray());

EqualTo

import static org.hamcrest.Matchers.equalTo;
assertThat(new String[]{"foo", "bar"}, arrayWithSize(equalTo(2)));

HasItemInArray

import static org.hamcrest.Matchers.hasItemInArray;
assertThat(new String[] {"foo", "bar"}, hasItemInArray("bar"));

StartsWith

import static org.hamcrest.Matchers.startsWith;
assertThat(new String[] {"foo", "bar"}, hasItemInArray(startsWith("ba")));

Beans

EqualTo

import static org.hamcrest.Matchers.equalTo;
File bean = new File("filename");

assertThat(bean, hasProperty("path", equalTo("filename")));

HasProperty

import static org.hamcrest.Matchers.hasProperty;
File bean = new File("filename");

assertThat(bean, hasProperty("path"));

SamePropertyValuesAs

import static org.hamcrest.Matchers.samePropertyValuesAs;
File bean = new File("filename");

File expectedBean = new File("filename");

assertThat(bean, samePropertyValuesAs(expectedBean));

Classes

TypeCompatibleWith

import static org.hamcrest.Matchers.typeCompatibleWith;
assertThat(Integer.class, typeCompatibleWith(Number.class));

Collections

Empty

import static org.hamcrest.Matchers.empty;
assertThat(new ArrayList<String>(), empty());
assertThat(new ArrayList<String>(), is(empty()));

EmptyCollectionOf

import static org.hamcrest.Matchers.emptyCollectionOf;
assertThat(new ArrayList<String>(), emptyCollectionOf(String.class));
assertThat(new ArrayList<String>(), is(emptyCollectionOf(String.class)));

EqualTo

import static org.hamcrest.Matchers.equalTo;
assertThat(Arrays.asList("foo", "bar"), hasSize(equalTo(2)));

HasSize

import static org.hamcrest.Matchers.hasSize;
assertThat(Arrays.asList("foo", "bar"), hasSize(2));

Multiple Matchers

AllOf

import static org.hamcrest.Matchers.allOf;
boolean a = true;
boolean b = true;
boolean c = false;

assertThat(a, allOf(is(b), not(c)));
assertThat(a, allOf(is(b)));

AnyOf

import static org.hamcrest.Matchers.anyOf;
boolean a = true;
boolean b = true;
boolean c = false;

assertThat(a, anyOf(is(c), not(c)));
assertThat(a, anyOf(is(b)));

DescribedAs

import static org.hamcrest.Matchers.describedAs;
describedAs(description, equalTo(bigDecimal), bigDecimal.toPlainString());

EqualTo

import static org.hamcrest.Matchers.equalTo;
logger.info(String.valueOf(describedAs(description, equalTo(bigDecimal), bigDecimal.toPlainString())));

Is

import static org.hamcrest.Matchers.is;
boolean a = true;
boolean b = false;

assertThat(a, is(not(b)));

Not

import static org.hamcrest.Matchers.not;
boolean a = true;
boolean b = false;

assertThat(a, not(is(b)));

Comparables

EqualTo

import static org.hamcrest.Matchers.comparesEqualTo;
assertThat(1, comparesEqualTo(1));

GreaterThan

import static org.hamcrest.Matchers.greaterThan;
assertThat(2, greaterThan(1));

GreaterThanOrEqualTo

import static org.hamcrest.Matchers.greaterThanOrEqualTo;
assertThat(1, greaterThanOrEqualTo(1));
assertThat(2, greaterThanOrEqualTo(1));

LessThan

import static org.hamcrest.Matchers.lessThan;
assertThat(1, lessThan(2));

LessThanOrEqualTo

import static org.hamcrest.Matchers.lessThanOrEqualTo;
assertThat(1, lessThanOrEqualTo(1));
assertThat(1, lessThanOrEqualTo(2));

DOM

HasXPath

import static org.hamcrest.Matchers.hasXPath;
assertThat(testNode, hasXPath("/xml/top/middle/bottom"));

StartsWith

import static org.hamcrest.Matchers.startsWith;
assertThat(testNode, hasXPath("/xml/top/middle/bottom", startsWith("val")));

EventObjects

EventFrom

import static org.hamcrest.Matchers.eventFrom;
assertThat(testEvent, eventFrom(source));
assertThat(testEvent, is(eventFrom(source)));

Is

import static org.hamcrest.Matchers.is;
assertThat(testMenuEvent, is(eventFrom(MenuEvent.class, source)));
assertThat(testMenuEvent, eventFrom(MenuEvent.class, source));

General purpose

Any

import static org.hamcrest.Matchers.any;
assertThat(myString, any(String.class));

Anything

import static org.hamcrest.Matchers.anything;
// All the following assertions match always
assertThat(myString, is(anything()));
assertThat(four, is(anything()));

// Same thing, with just a description of this "anything"
assertThat(four, is(anything("four")));

EqualTo

import static org.hamcrest.Matchers.equalTo;
assertThat(a, equalTo(b));

HasToString

import static org.hamcrest.Matchers.hasToString;
assertThat(boolObject, hasToString("true"));
// Check that toString method of boolObject object returns a value that satisfies the specified matcher
assertThat(boolObject, hasToString(any(String.class)));

InstanceOf

import static org.hamcrest.Matchers.instanceOf;
assertThat(four, instanceOf(Integer.class));
assertThat(four, is(instanceOf(Integer.class)));

Is

import static org.hamcrest.Matchers.is;
assertThat(a, is(b));
// Deprecated
assertThat(a, is(Boolean.class));

IsA

import static org.hamcrest.Matchers.isA;
assertThat(four, isA(Integer.class));

IsIn

import static org.hamcrest.Matchers.isIn;
assertThat(four, isIn(numbers));

// Check that object is within the numbers array
assertThat(four, isIn(numberAsArray));

IsOneOf

import static org.hamcrest.Matchers.isOneOf;
assertThat(four, isOneOf(four, five));

Not

import static org.hamcrest.Matchers.not;
assertThat(a, not(c));

NotNullValue

import static org.hamcrest.Matchers.notNullValue;
assertThat(four, notNullValue());
assertThat(four, is(notNullValue()));

// Check that four is not a null variable of Integer type
assertThat(four, notNullValue(Integer.class));

NullValue

import static org.hamcrest.Matchers.nullValue;
// Check that nullValue variable is null
assertThat(nullValue, nullValue());
assertThat(nullValue, is(nullValue()));

// Check that nullValue is a null variable of String type
assertThat(nullValue, nullValue(String.class));

SameInstance

import static org.hamcrest.Matchers.sameInstance;
assertThat(four, sameInstance(four));
assertThat(four, is(sameInstance(four)));
assertThat(four, not(sameInstance(five)));

TheInstance

import static org.hamcrest.Matchers.theInstance;
assertThat(four, theInstance(four));
assertThat(four, is(theInstance(four)));
assertThat(four, not(theInstance(five)));

Iterables

Contains

import static org.hamcrest.Matchers.contains;
assertThat(Arrays.asList("foo", "bar"), contains("foo", "bar"));
// With one matcher as parameter
assertThat(Arrays.asList("foo"), contains(equalTo("foo")));
// With matchers as parameters
assertThat(Arrays.asList("foo", "bar"), contains(equalTo("foo"), equalTo("bar")));
// With list of matchers as parameter
List<org.hamcrest.Matcher<? super String>> matchers = new ArrayList<org.hamcrest.Matcher<? super String>>();
matchers.add(equalTo("foo"));
matchers.add(equalTo("bar"));
assertThat(Arrays.asList("foo", "bar"), contains(matchers));

ContainsInAnyOrder

import static org.hamcrest.Matchers.containsInAnyOrder;
assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder("bar", "foo"));
// With one matcher as parameter
assertThat(Arrays.asList("foo"), containsInAnyOrder(equalTo("foo")));
// With matchers as parameters
assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(equalTo("bar"), equalTo("foo")));
// With list of matchers as parameter
List<org.hamcrest.Matcher<? super String>> matchers = new ArrayList<org.hamcrest.Matcher<? super String>>();
matchers.add(equalTo("bar"));
matchers.add(equalTo("foo"));
assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder(matchers));

EmptyIterable

import static org.hamcrest.Matchers.emptyIterable;
assertThat(new ArrayList<String>(), emptyIterable());
assertThat(new ArrayList<String>(), is(emptyIterable()));

EmptyIterableOf

import static org.hamcrest.Matchers.emptyIterableOf;
assertThat(new ArrayList<String>(), is(emptyIterableOf(String.class)));

EveryItem

import static org.hamcrest.Matchers.everyItem;
assertThat(Arrays.asList("bar", "baz"), everyItem(startsWith("ba")));

HasItem

import static org.hamcrest.Matchers.hasItem;
assertThat(Arrays.asList("foo", "bar"), hasItem("bar"));
// With Matcher as paramter
assertThat(Arrays.asList("foo", "bar"), hasItem(equalTo("bar")));

HasItems

import static org.hamcrest.Matchers.hasItems;
assertThat(Arrays.asList("foo", "bar", "toto"), hasItems("bar", "toto"));
// With Matcher as paramter
assertThat(Arrays.asList("foo", "bar", "toto"), hasItems(equalTo("bar"), equalTo("toto")));

Maps

HasEntry

import static org.hamcrest.Matchers.hasEntry;
assertThat(myMap, hasEntry("bar", "foo"));

// With  matchers as parameters
assertThat(myMap, hasEntry(equalTo("bar"), equalTo("foo")));

HasKey

import static org.hamcrest.Matchers.hasKey;
assertThat(myMap, hasKey("bar"));

// With matcher as parameter
assertThat(myMap, hasKey(equalTo("bar")));

HasValue

import static org.hamcrest.Matchers.hasValue;
assertThat(myMap, hasValue("foo"));

// With matcher as parameter
assertThat(myMap, hasValue(equalTo("foo")));

Numbers

CloseTo

import static org.hamcrest.Matchers.closeTo;
// Creates a matcher of BigDecimals that matches when an examined BigDecimal is equal to
// the specified operand, within a range of +/- error. The comparison for equality is done
// by BigDecimals BigDecimal.compareTo(java.math.BigDecimal) method.
// The first parameter is the operand: the expected value of matching BigDecimals
// Second parameter is error:  the delta (+/-) within which matches will be allowed
// => summary: 1.03 is close to 1.0 with - 0.03 error (precision)
assertThat(new BigDecimal("1.03"), closeTo(new BigDecimal("1.0"), new BigDecimal("0.03")));
assertThat(new BigDecimal("1.03"), is(closeTo(new BigDecimal("1.0"), new BigDecimal("0.03"))));

// With doubles
assertThat(1.5, closeTo(1.0, 0.5));
assertThat(1.5, is(closeTo(1.0, 0.5)));

Strings

ContainsString

import static org.hamcrest.Matchers.containsString;
assertThat(value, containsString("ring"));

EndsWith

import static org.hamcrest.Matchers.endsWith;
assertThat(value, endsWith("Note"));

EqualToIgnoringCase

import static org.hamcrest.Matchers.equalToIgnoringCase;
String value = "myStringOfNoTe";
assertThat(value, equalToIgnoringCase("MYSTRINGOFNOTE"));

EqualToIgnoringWhiteSpace

import static org.hamcrest.Matchers.equalToIgnoringWhiteSpace;
String value = "myStringOfNoTe";
assertThat(value, equalToIgnoringWhiteSpace("    myStringOfNoTe   "));

IsEmptyOrNullString

import static org.hamcrest.Matchers.isEmptyOrNullString;
assertThat("", isEmptyOrNullString());
assertThat(null, isEmptyOrNullString());

IsEmptyString

import static org.hamcrest.Matchers.isEmptyString;
assertThat("", isEmptyString());

StartsWith

import static org.hamcrest.Matchers.startsWith;
assertThat(value, startsWith("my"));

StringContainsInOrder

import static org.hamcrest.Matchers.stringContainsInOrder;
assertThat("myString Of Note", stringContainsInOrder(Arrays.asList("my", "String", "Of", "Note")));
Nach oben