Hamcrest Integration

Deeper integration with the Hamcrest matcher library.

Maven Dependency

<dependency>
  <groupId>org.apache.sling</groupId>
  <artifactId>org.apache.sling.testing.hamcrest</artifactId>
</dependency>

Note that to keep the classpath consistent this module has all its dependencies marked as provided (except hamcrest). It relies on your own project to define the needed dependencies, such as org.apache.sling:org.apache.sling.api.

See latest version on the downloads page.

Usage

The class org.apache.sling.testing.hamcrest.ResourceMatchers is the main entry point. It contains static methods that can be used to create assertions.

import static org.apache.sling.hamcrest.ResourceMatchers.resourceOfType;

public void MyServiceTest {

  @Test 
  public void loadResources() {
    Map<String, Object> expectedProperties = /* define properties */;
    Resource resource = /* load resource */ null;
    
    assertThat(resource, resourceOfType("my/app"));
    assertThat(resource, hasChildren("header", "body"));
    assertThat(resource, resourceWithProps(expectedProperties));
  }

}

The Slingshot sample application uses these matchers, see SetupServiceTest.java for an example.

- ( Hamcrest Integration )