Spring Boot and REST Assured is a great combination to build and test REST Web services. In this tutorial we will learn how to create a simple REST application and test it with REST Assured Framework.

REST Assured is a Java library that allows you to use a domain-specific language (DSL) for writing powerful, easy to maintain tests for RESTful APIs. In this tutorial I'll show you how to set up and configure REST Assured with a Spring Boot Application.

Start by creating a new project which includes the web dependencies:

  spring init -dweb demo-test

Now import the Maven project in your favourite IDE and add a model class named Customer that will be returned by a GET Request:

package com.example.demorest;

public class Customer {

	private int id;
	private String name;

	public Customer(int id, String name) {
		this.id = id;
		this.name = name;

	public String getName() {
		return name;

	public void setName(String name) {
		this.name = name;

	public int getId() {
		return id;

	public void setId(int id) {
		this.id = id;


All you need to build a Rest Service in Spring Boot is a RestController:

package com.example.testrest;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

public class CustomerController {
    CustomerRepository repository;

    public List<Customer> findAll() {
        return repository.getData();

    public Customer findOne(@PathVariable int id) {
        return repository.getData().get(id);


As you can see, the CustomerController Endpoint has two methods:

  • findAll: which returns all the Customer objects
  • findOne: which returns a single Customer object

Both methods rely on the CustomerRepository Class which has a very simple implementation to produce a List of Customer objects:

package com.example.testrest;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
public class CustomerRepository {
    List<Customer> customerList = new ArrayList<Customer>();

    public void init(){
        customerList.add(new Customer(1, "frank"));
        customerList.add(new Customer(2, "john"));
    public List<Customer> getData() {
        return customerList;

And finally let's code the Test class which uses REST Assured to verify both methods:

package com.example.testrest;

import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static io.restassured.RestAssured.get;
import static org.hamcrest.CoreMatchers.is;

@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.DEFINED_PORT)
public class DemoApplicationTests {

	public void testCustomerList() {

				.body("size()", is(2));

				.body("name", Matchers.equalTo("frank"));

				.body("name", Matchers.equalTo("john"));



In order to compile the application, you need the RestAssured dependency available in your pom.xml:


Now compile and package the application with:

$ mvn clean install

Now you can run the application in any Spring Boot available way, f.e.

mvn spring-boot:run

Then, run the Test class as well, which should pass all Tests contained:

spring boot restassured tutorial

You can find the source code for the Spring Boot REST Assured tutorial here: https://github.com/fmarchioni/masterspringboot/tree/master/test/test-rest


FREE WildFly Application Server - JBoss - Quarkus - Drools Tutorials