320x100
Spock으로 테스트코드를 짜보자
(Spock)[http://kwonnam.pe.kr/wiki/java/spock]
spock test 예시
when - then
@SpringBootTest
class apiServiceSpecTest extends Specification {
@Autowired
ApiService apiService
int productNo = 100
int size = 100
def "getProductNames 테스트"() {
when:
List<String> result = apiService.getProductNames(productNo, size)
then:
result[0] == "name1"
}
}
expect
expect = when + then
def "getProductNames 테스트"() {
expect:
List<String> result = apiService.getProductNames(productNo, size)
result[0] == name
where:
productNo | size || name
100 | 100 || "name1"
200 | 200 || "name2"
}
where
특정 변수(TC)에 값을 대입해서 해당 테스트코드를 독립적으로 기동한다.
TC 한 줄 당 테스트 한 번
where:
var1 | var2 || result
"변수1" | "변수2" || "결과
입출력 구분을 위해 || 구분자를 사용한다고 한다.
expect 변수가 너무 긴 경우
problem
TC 변수가 너무 많거나 하나의 변수가 너무 긴 경우 가로로 너무 많이 나열된다. -> 보기 불편
ex) TC 변수 개수가 100개이거나 하나의 변수가 너무 긴 경우
where:
var1 | var2 | var3 | var4 | var5 | var6 | var7 | var8 | ....
Solve
// 2차 배열로 TC 반환.
def getTestData() {
[
["var1", "var2", "var3", "var4", "var5",
"var6", "var7", "var8"],
["var1", "var2", "var3", "var4", "var5",
"var6", "var7", "var8"]
]
}
// mock Test
def serviceTest() {
where:
[var1, var2, var3, var4, var5, var6, var7, var8] << getTestData() // 2차 배열 TC 변수에 주입.
}
where 조건 1개 일 때
where:
a | _
1 | _
7 | _
0 | _
_ 사용.
참고로 _는 grrovy에서 와일드카드로 사용된다고 한다.
참고 : http://spockframework.org/spock/docs/1.0/data_driven_testing.html
webClient Test
Flux : https://docs.spring.io/spring/docs/current/spring-framework-reference/pdf/testing-webtestclient.pdf
320x100
'Back-End (web)' 카테고리의 다른 글
[Intellij][warning] Following modules override project settings (0) | 2019.06.12 |
---|---|
[SPRING] Controller redirect (0) | 2019.05.30 |
[spring] webClient error 처리 (3) | 2019.05.08 |
[Error] Mockito cannot mock/spy because: final class (0) | 2019.04.15 |
[Kotlin] If 문 Type mismatch (0) | 2019.03.25 |
댓글