Across application testing

It is possible to test your @AcrossApplication with Spring Boot testing support. Using the @SpringBootTest in your tests is necessary for default loading and YAML support. Refer to the Spring Boot reference documentation for more information on Spring Boot testing facilities.


A full-stack web integration test (eg. with an embedded Tomcat) does not require any special configuration.

You can use @ExposeForTest in combination with @SpringBootTest to expose additional components during test execution.

Example integration test with an embedded servlet container on a random port
@WebIntegrationTest(randomPort = true)
@SpringBootTest(classes = MyApplication.class)
public class TestSpringBootWebIntegration
	private final TestRestTemplate restTemplate = new TestRestTemplate();

	private int port;

	public void controllersShouldSayHello() {
		assertEquals( "application says hello", get( "/application" ) );
		assertEquals( "infrastructure says hello", get( "/infrastructure" ) );

	private String get( String relativePath ) {
		return restTemplate.getForEntity( url( relativePath ), String.class ).getBody();

	private String url( String relativePath ) {
		return "http://localhost:" + port + relativePath;

Integration test with MockMvc support

It is also possible to start your entire @AcrossApplication without an embedded servlet container. However if you want to have support for MockMvc instantiated with dynamically registered filters, you must manually configure the application loader to use a MockAcrossServletContext. This is done by adding the required configuration to @SpringBootTest and initializer classes to the @ContextConfiguration. See the appendix.adoc#test-configuration-classes for an overview of all configuration classes available.

Example Spring Boot integration test with MockMvc
@SpringBootTest( classes = { MyApplication.class, MockMvcConfiguration.class } )
@ContextConfiguration( initializers = MockAcrossServletContextInitializer.class )
public class TestSpringBootMockMvc
	private MockMvc mockMvc;

	public void controllersShouldSayHello() throws Exception {
		assertContent( "application says hello", get( "/application" ) );
		assertContent( "infrastructure says hello", get( "/infrastructure" ) );

	private void assertContent( String expected, RequestBuilder requestBuilder ) throws Exception {
		mockMvc.perform( requestBuilder )
		       .andExpect( status().isOk() )
		       .andExpect( content().string( is( expected ) ) );
Using @AcrossWebAppConfiguration in combination with @SpringBootTest is not possible, as the context loaders they use conflict with each other.