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
      }
   }
})

参照