RestAssured는 REST 기반의 서비스에서 테스트를 도와주는 자바 라이브러리다.
간단하게 gradle/Maven으로 추가할 수 있으며 버전은 링크 참고.
Rest Assured 는 HTTP와 JSON을 기반으로 테스트하므로 언어에 독립적이다. 따라서 테스트하고자 하는 어플리케이션이 Python으로 작성되었든 Ruby로 작성되었든 테스트할 수 있다.
RestAssured는 기본적으로 통합테스트의 성격을 가진다. 테스트의 과정에서 주어진 Uri로 요청을 보내고 받은 Response가 원하는대로 왔는지 테스트하는 것이기 때문이다.
만약 컨트롤러를 유닛 테스트하고 싶다면 spring-mock-mvc를 통해서 단위테스트 할 수도 있다.
기본적으로 테스트 코드를 작성할 때 given/when/then을 메서드로 쓸 수 있다.
인덴트를 잘 맞춰서 사용하면 given/when/then을 가독성 좋게 쓸 수 있다.
또한 위의 코드처럼 then() 이후 간단하게 response의 값으로 assert까지 한번에 처리할 수 있다.
공식 문서에서 컨벤션이라고는 하지 않았지만 예제들을 보면 점이 항상 라인이 바뀌기 전에 끝에 찍혀있다. 일반적으로 자바 코딩을 할때 점을 라인 첫번째 시작할 때 찍는 것과 대조된다.
http 메시지 바디에 담을 내용을 다양한 형식으로 담을 수 있다.
내부적으로 우선순위에 따라 Jackson2를 이용해서 JSON으로 변환한다.
위의 코드에서는 Map을 이용해서 body에 데이터를 담아 보내고 있다.
위의 코드에서는 자바 객체를 바로 담고 있다.
위의 코드에서 given() 뒤에 log().all()
이 있고 then() 뒤에도 log().all()
이 있다.
given 뒤의 log().all()
은 리퀘스트에 대해 로그를 남기는 것이고 then 뒤의 log().all()
은 리스폰스에 대한 로그를 남기는 것이다.
코드에서는 all()을 사용했지만 원하는 것만 골라서 볼 수도 있다. params, body, headers, cookies, method 등이 있다.