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" )