본문 바로가기
두고두고 볼 것

테스트 코드의 중요성

by 문자메일 2022. 11. 13.

테스트 코드의 중요성

 

테스트 코드는 기능에 대한 불확실성을 감소시킬 수 있으며, 기존에 개발된 기능을 안전하게 보호해준다.

ex : A 기능 개발 했는데, B 기능 문제 발생하는 경우

 

테스트 코드 작성은 개발 단계 초기에 문제 발견에 도움을 주기 때문에, 개발 시간을 단축!

ex : 충분한 테스트 코드 없이 빠르게 배포하면 배포 후 문제가 발견되기 때문에   

 

+ 다른 부분에서 찾은 내용

1. 개발 과정에서 문제를 미리 발견할 수 있다.

2. 기능 추가와 리팩토링을 안심하고 할 수 있다.

3. 빠른 시간 내 코드의 동작 방싱과 결과를 확인할 수 있다.

4. 좋은 테스트 코드를 작성하려 하다보면, 자연스럽게 좋은 코드가 만들어 진다.

5. 잘 작성한 테스트는 문서 역할을 한다. (코드리뷰를 돕는다.)

 

Spock 프레임워크란?

 

Spock란 Groovy 언어를 이용하여 테스트 코드를 작성할 수 있는 프레임워크이며 JUnit과 비교하여 코드를 더 간결하게 작성 가능

 

Groovy 언어는 동적 타입 프로그래밍 언어로 JVM 위에서 동작하며 Java 문법과 유사

 

테스트 메소드 이름을 문자열로 작성할 수 있으며 given, when, then 코드 블록을 명확히 구분

 

Junit의 경우 주석으로 블록을 구분했었고, 메소드 이름 또한 제약사항이 많이 존재

 

import spock.lang.Specification

import java.nio.charset.StandardCharsets

class KakaoUriBuilderServiceTest extends Specification {

    private KakaoUriBuilderService kakaoUriBuilderService;

    def setup(){
        kakaoUriBuilderService = new KakaoUriBuilderService();
    }

    def "buildUriByAddressSearch - 한글 파라미터의 경우 정상적으로 인코딩"(){
        given:
        String address = "서울 성북구"
        def charset = StandardCharsets.UTF_8

        when:
        def uri = kakaoUriBuilderService.buildUriByAddressSearch(address);
        def decodeResult = URLDecoder.decode(uri.toString(), charset)

        then:
        println uri
        decodeResult == "https://dapi.kakao.com/v2/local/search/address.json?query=서울 성북구"
    }
}

위는 유닛 테스트

 

 

 

 

스프링 컨테이너를 띄어 놓고 전체 통합 테스트(여러 bean들 간에 의존성주입을 통해 여러 모듈간의 연동까지 검증하는 테스트)

'두고두고 볼 것' 카테고리의 다른 글

핵심 정리  (0) 2023.01.19
객체지향 설계 및 구현 예시  (0) 2022.11.02
일급 콜렉션  (0) 2022.09.22
객체지향  (0) 2022.09.20
트렌젝션  (0) 2022.07.02

댓글