Home
Backend Engineering
Spring Boot DB 연동과 테스트
울이
울이
January 21, 2022
2 min

Table Of Contents

01
SpringBoot 를 사용해 DB 연결하기 - H2
02
SpringBoot 패키지 관리하기
03
Model 생성하기
04
Repository 만들기
05
Test Class 만들기(Junit4)
06
Test 함수 - Create
07
Test 함수 - Read
08
Test 함수 - Update
09
Test 함수 - Delete

SpringBoot 를 사용해 DB 연결하기 - H2

많이 사용되는 데이터베이스인 MySQL 사용에 앞서, 테스트를 위해 H2 데이터베이스를 사용해서, 간단한 로직을 작성 해 보고, 테스트까지 해 보려고 한다

SpringBoot 패키지 관리하기

나는 Gradle로 관리 패키지를 관리 하려고 한다. 이전에는 Maven에서 관리를 했었지만, 사용하다보니 Gradle이 좀 더 직관적이고 편하다는 느낌을 많이 받았다. (사실, 패키지 이름만 같다면 상관없을 것 같다)

build.gradle 파일에서 아래와 같이 세팅 해 주었다

SpringBoot build dependency setting - build.gradle
SpringBoot build dependency setting - build.gradle

Dependency 설정이 완료가 되었기 때문에, SpringBoot가 잘 실행이 되도록 설정값들을 아래와 같이 넣어주자

가장 처음 세팅을 할 수 있는 파일은 application.properties 이지만, 나는 application.yml을 새로 만들어 Hierarchy를 표현해서 보기 편하도록 작성했다.

SpringBoot Application Configuration - application.yml
SpringBoot Application Configuration - application.yml

세팅이 완료되었기 때문에 이제 간단한 application을 만들어보자

Model 생성하기

데이터를 넣기 위해서는, 데이터를 저장 할 수 있는 테이블을 H2에 만들고 데이터의 형태를 명시 해 주어야 한다

기본 패키지 안쪽으로 model 패키지를 만들고, 내부에 UserModel을 생성했다.

usermodel.png
usermodel.png

모델은 가장 기본적인 User를 나타내는 것들을 사용 해 보려고 한다. 이것을 기반으로 나중에 로그인/로그아웃/회원가입 등 여러가지 서비스로 확장 해 볼 수 있을 것 같다.

Repository 만들기

위에서 생성 한 User Model을 가지고 Repository를 만들어주자. 지금은 기본적인 Save Method를 조금만 개선해서 테스트 해 보려고 하기 때문에 큰 작업은 필요 없다

repostory.png
repostory.png

@Repository 어노테이션으로 레포지터리를 나타내어주었고, JpaRepository를 상속받아 기본적인 메서드들을 사용하고, findByName메서드를 만들어서 username으로 찾을 수 있도록 함수를 만들어주었다

Test Class 만들기(Junit4)

위에서 생성한 Repository를 가지고 간단한 테스트를 해 보자. User 모델을 가지고 CRUD 테스트를 해 보려고 한다.

Create 는 데이터를 생성하는 것 이기때문에 Table 생성과 Repository를 잘 작성했는지에 대해서 테스트 해 볼 수 있을 것이다. 때문에 선제조건이 크게 필요하지 않을 것 같다

다만 Read, Update, Delete는 데이터를 찾아서 읽고, 수정하고 삭제하는 과정이기 때문에 Repository의 함수로 가져온 데이터의 유무가 중요하다.

이번에 진행 할 때는 테스트코드에 실행 순서들을 입혀서 데이터를 생성 한 후에 이어지는 동작들을 테스트 해 보려고 한다

여기서는 Junit4를 사용한다. 사용하려고 하는 기능들이 Junit5에서는 좀 더 편하게 수정되었다. 이부분들은 다시한번 다뤄보려고한다.

우선, 테스트 해 볼 클래스를 하나 생성하고 테스트 할 전체적인 클래스의 구성을 만든다

test기능 작성을 위한 SpringBoot Testclass 생성
test기능 작성을 위한 SpringBoot Testclass 생성

@Autowired 어노테이션으로 Repository를 연결 해 준다

Test Class에 새로운 @FixMethodOrder 어노테이션을 적용해서 테스트 함수별로 순서를 적용 할 수 있도록 작업 해 주려고 한다. 지금은 NAME_ASCENDING 옵션을 주었지만, 다른 옵션들도 있다.

FixMethodOrder어노테이션을 적용한 테스트클래스
FixMethodOrder어노테이션을 적용한 테스트클래스

NAME_ASCENDING 옵션에서 알 수 있듯이, 테스트 함수이름에 따라서 정렬 해 준다. 함수 이름에 번호를 매기고, 어떤 기능을 할 수 있을지 대략적으로 나타내었다

test-function.png
test-function.png

Test 함수 - Create

test-create.png
test-create.png

우선 뒤에서 Read, Update, Delete에서 사용할 데이터이니까 잘 확인 해 보도록 하자

Test 함수 - Read

test-read.png
test-read.png

Test 함수 - Update

test-update.png
test-update.png

Test 함수 - Delete

test-delete.png
test-delete.png


Tags

#Spring#Java#SpringBoot#SpringTest#Database#Repository#Testcode#Junit4
Previous Article
SpringBoot의 Validation을 사용 해 보자
울이

울이

개발자 울이

경험하고 사용하고 개선하는 것, 그리고 소통하면서 성장하는 것을 좋아합니다.

Expertise

Backend
Frontend
Data Engineering

Social Media

githublinkedinwebsiteinstagram

Related Posts

스프링부트 멀티모듈 구성하기(3) - API 모듈 작성하기
November 22, 2022
1 min
© 2022, All Rights Reserved.

Quick Links

Home

Social Media