Kotest 다른 설정(Other settings)

Kotest에서 빠르게 실패하는 방법, 빈 테스트인 경우 실패하게 하는 방법 등에 대해서 설명한다.

빠른 실패

Kotest는 테스트 중 하나가 실패할 경우 테스트 목록을 빠르게 실패시킬 수 있다. 이를 빠른 실패(Fail Fast)라고 한다.

빠른 실패은 사양 수준 또는 상위 테스트 수준에서 적용될 수 있다.

다음 예제에서는 부모 테스트에 대해 빠른 실패 기능을 활성화하고 해당 컨텍스트 내에서 첫 번째 실패가 발생하면 나머지는 건너뛰게 된다.

class FailFastTests() : FunSpec() {
   init {
      context("context with fail fast enabled").config(failfast = true) {
         test("a") {} // pass
         test("b") { error("boom") } // fail
         test("c") {} // skipped
         context("d") {  // skipped
            test("e") {} // skipped
         }
      }
   }
}

이 기능은 스펙 수준에서 페일패스트를 설정하여 스펙의 모든 범위에 대해 활성화할 수 있다.

class FailFastTests() : FunSpec() {
   init {

      failfast = true

      context("context with fail fast enabled at the spec level") {
         test("a") {} // pass
         test("b") { error("boom") } // fail
         test("c") {} // skipped
         context("d") {  // skipped
            test("e") {} // skipped
         }
      }
   }
}

빈 테스트 스위트에서 실패

프로젝트가 항상 하나 이상의 테스트를 실행하도록 하려면 프로젝트 구성에서 failOnEmptyTestSuite를 활성화하면 된다.

이 옵션을 true로 설정하고 모듈에 실행된 테스트가 없는 경우 빌드가 실패한다.

class ProjectConfig : AbstractProjectConfig() {
  override val failOnEmptyTestSuite = true
}

Config Dump

Kotest는 테스트 엔진이 시작될 때 테스트 실행에 사용될 구성을 선택적으로 인쇄할 수 있다. 이렇게 하려면 시스템 속성 또는 환경 변수를 설정하고 이름은 kotest.framework.dump.config 값은 true로 설정한다.

test {
  systemProperty "kotest.framework.dump.config", "true"
}

예를 들어 gradle을 사용하면 테스트 작업 구성 블록 내에서 시스템 속성을 설정한다.

~~~ Kotest Configuration ~~~
-> Parallelization factor: 1
-> Concurrent specs: null
-> Global concurrent tests: 1
-> Dispatcher affinity: true
-> Coroutine debug probe: false
-> Spec execution order: Lexicographic
-> Default test execution order: Sequential
-> Default test timeout: 600000ms
-> Default test invocation timeout: 600000ms
-> Default isolation mode: SingleInstance
-> Global soft assertions: false
-> Write spec failure file: false
-> Fail on ignored tests: false
-> Fail on empty test suite: false
-> Duplicate test name mode: Warn
-> Remove test name whitespace: false
-> Append tags to test names: false
-> Extensions
  - io.kotest.engine.extensions.SystemPropertyTagExtension

참조




최종 수정 : 2024-04-14