DescribeSpec

Describe runs once:

Describe runs once: in this example 'counter' will be '1'

Code

package com.glassthought.sandbox

import io.kotest.core.spec.style.DescribeSpec

class DescribeSpecExample : DescribeSpec({
  var counter = 0

  describe("Counter example for DescribeSpec") {
    counter++
    println("Counter in describe: $counter")

    it("First IT block") {
      println("Counter in First IT: $counter")
    }

    it("Second IT block") {
      println("Counter in Second IT: $counter")
    }

    describe("Nested Describe") {
      it("Nested IT block") {
        println("Counter in Nested IT: $counter")
      }
    }
  }
})

Command to reproduce:

gt.sandbox.checkout.commit 581c4a01f0e91e73f0e4 \
&& cd "${GT_SANDBOX_REPO}" \
&& cmd.run.announce "./gradlew test --rerun-tasks"

Recorded output of command:

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec STANDARD_OUT
    Counter in describe: 1

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > First IT block STARTED

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > First IT block STANDARD_OUT
    Counter in First IT: 1

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > First IT block PASSED

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > Second IT block STARTED

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > Second IT block STANDARD_OUT
    Counter in Second IT: 1

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > Second IT block PASSED

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > Nested Describe > com.glassthought.sandbox.DescribeSpecExample.Nested IT block STARTED

com.glassthought.sandbox.DescribeSpecExample > Counter example for DescribeSpec > Nested Describe > com.glassthought.sandbox.DescribeSpecExample.Nested IT block STANDARD_OUT
    Counter in Nested IT: 1

If you want code to execute per it() use beforeTest

Counter is incremented with 'beforeTest'

Code

package com.glassthought.sandbox

import io.kotest.core.spec.style.DescribeSpec

var counter = 0

class DescribeSpecExample : DescribeSpec({

  describe("Counter example for DescribeSpec") {
    beforeTest {
      counter++
    }

    println("Counter in outer describe: $counter")

    it("First IT block") {
      println("Counter in First IT: $counter")
    }

    it("Second IT block") {
      println("Counter in Second IT: $counter")
    }

    describe("Nested Describe") {
      println("Counter in nested describe: $counter")

      it("Nested IT block-1") {
        println("Counter in Nested IT-1: $counter")
      }

      it("Nested IT block") {
        println("Counter in Nested IT-2: $counter")
      }
    }
  }
})

Command to reproduce:

gt.sandbox.checkout.commit 92ede4c421dde74fb8c2 \
&& cd "${GT_SANDBOX_REPO}" \
&& cmd.run.announce "./gradlew test --rerun-tasks"

Recorded output of command:

    Counter in outer describe: 0
    Counter in First IT: 1
    Counter in Second IT: 2
    Counter in nested describe: 3
    Counter in Nested IT-1: 4
    Counter in Nested IT-2: 5

BUILD SUCCESSFUL in 1s
3 actionable tasks: 3 executed

Children
  1. eg
  2. extend kotest DescribeSpec
  3. kotest DescribeSpec interception