Spock Framework

 

개요 및 특징
  • Groovy 언어를 기반으로 자바와 100% 호환됨
  • mocking, stubbing 을 지원해 mock객체로 동작 정의가 쉬움
  • 라이프사이클 메소드 제공 : setup(), cleanup() 등의 메소드로 테스트 전/후 설정 수행이 가능
  • 동일한 데이터를 여러번 실행가능한 블록 제공
  • 테스트 블록을 분리하고 실행 순서 지정 가능

 

 

Spock Block
  • given / setup
    • 테스트에 필요한 객체나 환경을 준비하는 블록
  • when
    • 테스트 하고 싶은 상황을 만드는 영역 ( 코드 실행 영역 )
  • then
    • 테스트 결과를 검증하는 블록 ( assert에 해당하는 문장 )
  • expect
    • when, then이 합쳐진 형태로 단위 테스트 시 유용
  • cleanup
    • 필요시 setup 자원을 정리
  • where
    • 일부 데이터만 바꿔가며 테스트를 할 수 있게 도와주는 영역

 

 

기본 사용법

 

1. 라이브러리 추가

testImplementation "org.spockframework:spock-spring"

 

2. 플러그인 추가

apply plugin: 'groovy' // groovy 지원

 

3. Specification 클래스 상속

import spock.lang.Specification

class UpdateBizFleetOrderVinsToPurchasedHandlerTest extends Specification {
}

* 이때, 주의할 점은 클래스를 ctrl + command + T 로 만들 때, 기존에 Test Library JUnit으로 사용하시던 분들은 Groovy로 바꿔줘야 합니다.

 

 

4. 라이프 사이클에 맞는 메소드 생성

def setupSpec() {}    // 모든 테스트 케이스 실행 전 실행 (@BeforeClass)
def setup() {}        // 각 테스트 케이스 실행 전 마다 실행 (@Before)
def cleanup() {}      // 각 테스트 케이스 실행 후 마다 실행 (@After)
def cleanupSpec() {}  // 모든 테스트 케이스 실행 후 실행 (@AfterClass)

 

 

참고
  • @Shared
    • 여러 테스트 간에 걸쳐서 공유되는 객체
  • Mock 테스트 코드
    • 도메인 클래스를 Mock 클래스의 피라미터로 주면서 생성
    • >> 를 통해 값을 반환 ( ex. A.findName(1) >> "park" )

+ Recent posts