본문 바로가기
Web/스프링 부트와 aws로 구현하는 웹서비스

7. 스프링부트, Gradle, Junit 업데이트 하기

by 장인이 2021. 7. 19.

해당 게시물들은 이동욱 저자님의 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 공부하며 기록한 것입니다.

 

 책을 보며 공부를 이어나가던 도중, 저자님의 블로그에 스프링부트 2.1 -> 2.4, Gradle 4.10 -> 6, Junit4 -> Junit5의 새로운 버전으로 코드를 정리하신 글을 발견하였다. (링크)

 

 물론 현재 스프링부트 2.5, Gradle은 7.1버전이 출시되었지만 최근 협업하고 있는 프로젝트의 버전은 스프링부트 2.4.8, Gradle 6.9이므로 우선 위의 링크를 통해 프로젝트를 수정하고, 추후에 더 상위버전을 공부할 것이다.

 

 

1. Gradle 버전 올리기

 기존에 gradle 4.10.4를 사용하였는데, 우선 gradle 버전을 올려준다. 해당 블로그 게시물에서는 6.7.1로 올렸으나, 현재 협업하는 gradle버전이 6.9이므로 6.9로 올리도록 할 것이다. Terminal에서 아래 명령어를 입력한다.

 

gradlew wrapper --gradle-version 6.9

 

 이는 윈도우 기준으로, Mac혹은 Linux에서는 ./gradlew로 실행하면 된다. 필자는 intellij의 terminal을 git bash로 전환한 상태이므로 ./gradlew를 입력하였다. 업데이트가 끝났다면, gradle-wrapper.properties에 들어가 gradle이 바뀌었는지 확인한다.

 

 

 

2. build.gradle

 Gradle의 버전이 변경됨에 따라 build.gradle의 설정들도 변경한다. 저자님께서 작성하진 게시물은 Gradle 6.7.1기준으로, 필자는 spring initializr(링크)를 통해 생성한 build.gradle을 참조하여 변경하였다.

 

 또한 스프링부트 버전은 2.4.8로 진행할 것이다.

 

 

 기존의 버전과 달라진 점으로는

 

1. Gradle 5부터 Gradle plugin 사용법의 변경이 생김, Gradle Plugin 사이트에 2가지 사용법이 명시되어 있다.

 

2. Junit5을 사용하기 위해 test가 필수로 선언되어야 한다

 

3. Gradle 6부터 compile, testCompile은 Soft Deporecate(기능을 사용할 수는 있으나, 조만간 사라지게 될 것)되었다. 이 대신 implementation, testImplementation을 사용한다.

 

 

3. Junit

 Junit4에서 Junit5으로 전환함에 따라 몇몇 요소들을 변경해야 한다. 프로젝트 전체에서 코드를 교체하고 싶을 때는, 윈도우에서는 Ctrl + Shift + R, Mac에서는 CMD + Shift + R를 입력하면 된다.

 

1) @Test

 @Test는 Junit5으로 올라오면서 패키지의 위치가 org.junit.Test 에서 org.junit.jupiter.api.Test으로 변경되었다.

 

<사진에선 ;을 누락, org.junit.jupiter.api.Test; 입력할 것>

 

2) @RunWith

@RunWith은 Junit5이 되면서 @ExtendWith으로 변경되었으며, 패키의 위치 또한 변경되어 2개 모두 변경해야 한다.

 

 

 

3) SpringRunner

 앞서 @RunWith가 @ExtendWith으로 변경됨에 따라 SpringRunner 또한 SpringExtension으로 변경되었으며, 클래스명과 패키지 위치 2개 다 변경해야 한다.

 

 

 

 

4) @After

 테스트 메소드가 끝날때마다 수행되던 @After 또한 @AfterEach으로 변경되었으며, 패키지 위치 또한 변경해야 한다.

 

 

 

 

5) @Before

 마지막으로 @Before는 @BeforeEach으로 변경되었으며, 패키지 위치 또한 org.junit.Before에서 org.junit.jupiter.api.BeforeEach으로 변경되었다. 해당 어노테이션은 아직 제 진도에서 사용되지 않았으므로, 추후에 사용할 시 변경하도록 할 것이다.

 

 

4. JPA

 스프링부트 2.1.10부터 MySQL 문법 지정 방식에 변화가 생겨, DB 설정들의 변경이 필요하다고 한다. 필자는 아직 진도가 나가지 않아 resources에 application.properties 하나만 지니고 있는데, 추후에 mariadb와 연결하는 등 application-real.properties를 추가하게 되는데 이에도 변경사항이 있다고 한다.

 

1) application.properties

 해당 파일도 수정한다.

<기존의 설정>

 

<바꾼 설정>

 

 바꾼 후, 기존에 작성한 테스트 코드를 모두 돌려본 결과 통과하였으며, localhost:8080/h2-console로 접속해 보았을 시 h2 웹 콘솔이 접속되는 것을 확인할 수 있었다.

 

 

 

2) application-real-db.properties

 해당 부분을 학습한 후 작성할 예정이다.

 

 

5. spring.profiles.include

 해당 부분을 학습한 후 작성할 예정이다.

 


 이번에는 저자님께서 버전이 올라감에 따라 어떤 부분들을 바꾸어야 하는지 친절하게 나와있어 수월하게 전환할 수 있었다. 하지만, 시간이 지나면 모든 개발 도구들은 버전업을 하며, 이 작성된 내용 역시 정상 작동하지 않을 것이다.

 

 따라서 오류가 발생할 경우 왜 안되는지 로그를 보고 검색하는 습관을 지니는 것이 가장 좋을 것 같다.

 


- 학습 내용 저장할 github

https://github.com/imgzon3/imgzon3-springboot-test

 

imgzon3/imgzon3-springboot-test

Contribute to imgzon3/imgzon3-springboot-test development by creating an account on GitHub.

github.com

 

댓글