본문 바로가기
Back-End (web)

[TEST] spock test example

by 햄과함께 2019. 1. 11.
320x100


/* kotlin */
 
// SumService.kotlin
@Service
class SumService {
    fun getSum(a: Int, b: Int) = a + b   
}
cs


위와 같이 숫자 a, b를 입력받아 합을 반환하는 함수가 있다고하자.

이 함수를 테스트코드를 작성하여 테스트해보자.


// SumServiceSpecTest.groovy
 
@SpringBootTest
class SumServiceSpecTest extends Specification {
 
    @Autowired
    SumService sumService
 
    def "getSum 음수 테스트" (){
        given:
        int a = -1
        int b = -2
        
        when:
        int result = sumService.getSum(a, b)        
 
        then:
        a + b == result
        Assert.assertEquals(a + b, result)
    }
 
    def "getSum 양수 테스트" (){
        given:
        int a = 1
        int b = 2
        
        when:
        int result = sumService.getSum(a, b)        
 
        then:
        a + b == result
        Assert.assertEquals(a + b, result)
     }
}
cs


JUnit에서 자주 쓰던 given, when, then 형식으로 코딩해보면 위와 같다.

음수, 양수 테스트를 해보았다.


// SumServiceSpecTest.groovy
 
@SpringBootTest
class SumServiceSpecTest extends Specification {
 
    @Autowired
    SumService sumService
 
    def "getSum 테스트" (){
        expect:
        result == sumService.getSum(a, b)        
 
        where:
        a | b | result
        -1 | -2 | -3
        1 | 2 | 3
    }
    
}
cs


Spock 테스트 코드는 groovy 언어로 작성한다.

Spock 테스트의 큰 장점은 where 절이다.

a, b, result 변수 값을 여러 개 입력할 수 있어 한 번에 여러 TC를 테스트 할 수 있다.

음수, 양수 테스트를 하는 2개의 함수를 하나의 함수로 줄인 것이다.


320x100

댓글