기록과 정리

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 02 본문

IT/스프링 부트와 AWS로 혼자 구현하는 웹 서비스

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 02

zepetto 2021. 3. 4. 23:22

이 글은 이동욱(jojoldu)님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스를 참고하였습니다.

m.yes24.com/Goods/Detail/83849117

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스

가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 

m.yes24.com

 

스프링 부트에서 테스트 코드를 작성하자

 

TDD , 테스트 주도 개발방법이다. 필자가 다니는 회사에도 TDD를 지향하지만 현실적인 시간에 의해 제대로 구현 또는 실현이 힘들때가 많다. 하지만 테스트 코드를 먼저 작성하고 실제 구현하는 방식은 따라가고 있다.

 

테스트 코드의 경우 , 단위 테스트 코드를 구현하는 것을 말하는데 보통 java 프로젝트의 경우 , Junit4 or Junit5를 통해 테스트 코드를 구현한다. ( 현업에서는 JUnit4가 확연히 많이 보인다. 책에서도 4로 실습 )

 

Spring Boot Application이 실행되기 위하여 Application 이라는 클래스와 메서드를 생성하자.

Application의 형제 또는 자식노드부터 컴포넌트 스캔 가능
Application.java

@SpringBootApplication : 해당 어노테이션은 스프링 부트의 자동설정 , 컴포넌트 스캔등을 사용할 수 있다. 따라서 해당 어노테이션을 사용하기 위해서는 프로젝트 위치상 컴포넌트가 포함된 클래스들의 최상단에 위치해야한다.

 

HelloController.java

@RestController : @ResponseBody + @Controller , 컨트롤러의 반환 값을 json 타입을 반환가능한 컨트롤러이다. REST API 를 만드는 시작점

@GetMapping : Http Method 가 GET 형태로 받을 수 있도록한 RequestMapping의 일종이다.

( = @RequestMapping(method = RequestMethod.GET ) 

 

HelloControllerTest.java

@RunWith(SpringRunner.class) : 스프링 부트의 테스트를 연결시켜주는 역할 Junit4의 특징

@WebMvcTest : Web에 관련된 테스트를 위한 어노테이션 , 주로 컨트롤러 테스트에 사용

@Autowired : bean 주입을 시켜준다.

 

hello 라는 get mapping을 mock 객체를 통해 status가 200상태인지 반환값이 hello 인지 확인하는 테스트 코드이다. 

성공한 테스트 코드

 

+Lombok

롬복을 dependency 받아주고 (gradle 및 maven 환경에 맞게 ) plugin을 설치해주자 .

인텔리제이의 경우 , 재시작을 통해 플러그인 적용이 가능하므로 restart 해줄 것 

HelloResponseDto.java

@Getter 모든 필드에 Getter를 추가해준다.

@RequiredArgsConstructor 선언된 모든 final 필드가 포함된 생성자를 생성해준다. 

 

아래는 해당 dto의 테스트 코드 이다.

 

assertThat : assertJ 의 테스트 검증 라이브러리

만약 테스트가 실패한다면 gradle이 5인지 확인 해야한다. 해당 url 을 통해 문제를 해결했다. ( github.com/jojoldu/freelec-springboot2-webservice/issues/2 )

 

P74 테스트코드에서 에러가 발생합니다. · Issue #2 · jojoldu/freelec-springboot2-webservice

HelloResponseDtoTest.java에서 메소드 실행 시 아래와 같은 에러가 발생합니다. Testing started at 오후 11:08 ... Task :cleanTest UP-TO-DATE Task :compileJava FAILED C:\Users\ssooy\Desktop\dev\springboot-book\src\main\java\c...

github.com