Kotest 구성(Configuration)

Kotest의 Property Testing 구성에 대해서 설명한다.

구성(Configuration)

Kotest는 프로퍼티 테스트를 실행할 때 몇 가지 구성 옵션을 지정할 수 있는 기능을 제공한다. 테스트 메서드에 PropTestConfig 인스턴스를 전달하여 이를 수행한다.

예를 들어:

class PropertyExample: StringSpec({
   "String size" {
      forAll<String, String>(PropTestConfig(options here...)) { a,b ->
         (a + b).length == a.length + b.length
      }
   }
})

시드(Seed)

일반적으로 사용되는 구성 옵션은 무작위 소스에 사용되는 시드(seed)를 지정하는 것이다. 이 옵션은 테스트가 실행될 때마다 동일한 값을 반복하려는 경우에 사용된다. 테스트 실패를 발견하고 해당 특정 값 집합이 회귀 테스트로서 향후에도 계속 실행되도록 하려는 경우 이 옵션을 사용할 수 있다.

시드 사용 방법에 대한 자세한 내용을 보려면 여기를 클릭한다.

최소 실패(Min Failure)

기본적으로 Kotest는 실패를 허용하지 않는다. 비결정적 테스트를 여러 번 실행하고 소수의 실패를 기꺼이 받아들이고 싶을 수도 있다. 설정에서 이를 지정할 수 있다.

class PropertyExample: StringSpec({
   "some flakey test" {
      forAll<String, String>(PropTestConfig(maxFailure = 3)) { a,b ->
         // max of 3 inputs can fail
      }
   }
})

PropTestListener

프로퍼티 테스트에서 각 테스트 반복마다 설정 및 해제를 수행해야 하는 경우가 있다. 이를 위해 PropTestConfigPropTestListener를 등록할 수 있다.

class PropertyExample: StringSpec({
   "some property test which require setup and tear down in each iteration" {
      forAll<String, String>(PropTestConfig(listeners = listOf(MyPropTestListener))) { a,b ->
         // some assertion
      }
   }
})

참조




최종 수정 : 2024-04-14