일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 포너블
- gcp ci/cd
- hackctf
- 웹해킹
- 웹보안
- 프로그래머스
- 회고
- 보안
- 백준
- kotest
- webhacking.kr
- node.js
- gcp cloud build
- 스프링 배치
- 파이썬
- 리버싱
- sequelize
- Baekjoon
- gcp
- nodejs
- docker
- 네트워크
- spring Batch
- cloud run
- Python
- Batch
- pwnable.xyz
- 사이버보안
- 시스템 해킹
- programmers
Archives
uju's Tech
[kotest] Data Driven Testing (Parameterized Test) 본문
Junit의 parameterize test가 kotest에서는 data driven testing 라는 이름을 갖는다.
Data Driven Testing은 테스트를 작성할 때 직접 작성한 예제를 기반으로 테스트를 할 수 있다.
앞서 포스팅했던 Property Based Testing 인 광범위한 범위의 데이터를 무작위로 테스트하는 경우와 반대되는 경우에 사용할 수 있을 것 같다.
명확하게 해당 인자가 들어갈 경우 에러를 발생한 다거나 무조건 성공해야하는 예제를 직접 명시하여 테스트할 때 Data Driven Testing을 잘 사용할 수 있을 것 같다.
Dependecy 추가
사용하는 버전은 알맞게 작성해주자.
testImplementation("io.kotest", "kotest-framework-datatest", "5.2.3")
사용 예시
"덧셈한 결과" {
withData(
"2 + 3 to 5,
"1 + 2" to 3,
) { (input, output) ->
add(input) shouldBe output
}
}
input과 output을 직접 명시하여 검증할 수 있다.
다음과 같이 WithDataTestName 을 사용해서 테스트 제목을 커스텀하여 테스트를 진행할 수 도있다.
"덧셈한 결과가 나와야한다." {
withData<Test>(
Test("2 + 3", 5),
Test("2 + 4", 6),
) { (input, output) ->
add(input) shouldBe output
}
}
data class Test(val input: String, val output: Int) : WithDataTestName {
override fun dataTestName() = "test: $a"
}
결과는 다음과 같이 나온다.
무작위 값 혹은 넓은 범위의 데이터 넣어 테스트를 하고싶다면 Kotest property based testing을 살펴보도록하자. ㅎㅎ
https://uju-tech.tistory.com/entry/kotest-Property-based-Testing
참고
https://kotest.io/docs/framework/datatesting/custom-test-names.html
'Programming > Kotlin' 카테고리의 다른 글
테스트하기 어려운 코드를 테스트하기 용이하게 개선하기 (0) | 2023.01.31 |
---|---|
[kotest] Property-based Testing (0) | 2022.05.08 |
Comments