Spring Boot - Repository Test Code 작성

김명식·2023년 5월 2일
0

Spring Boot

목록 보기
3/11
post-thumbnail

Test Driven Development

테스트 주도 개발

작성방법에 들어가기에 앞서, TDD 에 관련되어 잠깐 짚고넘어가겠다.
TDD 는 나 뿐만 아니라 여러 개발자가 가장 중요시하게 여기는 개발 방법 중 하나이다.

TDD 란,
개발 프로세스에서 테스트 코드를 먼저 작성한 뒤 그에 대응하는 코드를 작성하는 방법을 말한다.

이러한 작성방법을 사용하면 코드를 실행했을 때 발생하는 버그의 위치를 빠르게 찾을 수 있고
코드간에 결합도가 줄어들며 그에 따라 유지 보수성 향상 및 프로젝트 후반에 리팩토링이 유용해지기 때문이다.

만약 새로운 기능을 개발하고 있다면 반드시 TestCode 를 먼저 작성한 뒤 프로젝트에 적용시키는걸 권장


Repository Test 코드의 작성 Sequence는 다음과 같다.
예시를 쉽게 이해하기 위해 "책을 저장하는 과정" 을 예로 들겠다.

  1. Book Entity 설계 및 작성 (테스트를 위해 @Setter @ToString Annotation 적용)

  2. JpaRepository를 상속받는 bookRepository.interface를 작성

  3. Repository.interface에 Entity 속성을 인자로 준 뒤 Test.class 작성

    IntelliJ 사용자라면 Test Code를 작성하려는 파일에 커서를 둔 뒤
    ctrl + shift + t 를 누르면 해당 파일에 있는 모든 메서드를 포함한 테스트 클래스 파일을 간단히 작성할 수 있다.
  4. 생성된 테스트 최상위 클래스 @SpringBootTest Annotation을 붙여준다

  5. 테스트하려는 메서드 @Test 어노테이션을 붙인다.
    테스트 메서드에 따로 이름을 붙이고 싶다면 @DisplayName 어노테이션을 붙인 뒤 이름을 명시한다

  6. 메서드 안에 Book Entity 의 객체를 선언

  7. Entity 속성을 set으로 바인딩

  8. .toString으로 객체 표기

@SpringBootTest
class RootClass {
	
    @Test
    @DisplayName("책 저장 테스트")
    public void createBookTest() {
    
    	Book book = new Book();
        
        book.setBookName("테스트 상품");
        book.setItemDetail("테스트 상품 상세");
        book.setPrice(10000);
        book.setStockNumber(100);
        book.setRegTime(LocalDateTime.now());
        book.setUpdateTime(LocalDateTime.now());
        
        System.out.println( book.toString );
    
    }
    
}

위 코드를 실행하면 다음과 같은 Run 결과를 얻을 수 잇다.

Book
(id=1, 
bookNm=테스트 상품, 
price=10000, 
stockNumber=100, 
itemDetail=테스트 상품 상세,
regTime=2023-05-02T18:37:13.153221400,
updateTime=2023-05-02T18:37:13.153221400
)

Run 결과에 set 하지도 않은 id가 나오는 이유는
Entity에서 @Id를 설정할 때 @GeneratedValue(strategy = GerationType.Auto)로 선언하여
객체가 생성될 때 자동으로 id값이 매핑되기 때문이다.


이런 식으로 개발한 TestCode를 그대로 Servcie영역에 구현한다면 TDD 방식으로 개발한 것이다.
만일 테스트코드 없이 개발을 진행하다가 버그가 발생했다면
수많은 코드 중 어느 영역에서 오류가 났는지 발견하기 쉽지 않을 것이다.

하지만 위 처럼 특정 영역만을 수행하는 테스트 코드를 실행했을 때
버그가 발생했다면 바로 버그가 발생한 부분을 찾을 수 있다.

그러니 나 처럼 버그를 찾는데에 시간이 오래걸리는 주니어 개발자라면
더욱 더 TDD방식을 채택하는것을 추천한다.

profile
BackEnd & AWS Developer

0개의 댓글