kotest

kotlinでテストFWを増やしている

Listenerの確認

TestListener

beforeAnybeforeTest, afterAnyafterTestは同じらしいので一つにまとめます

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

class ListenerSpec: DescribeSpec({
    describe("listener hook check") {

        beforeContainer {
            println("beforeContainer")
        }
        afterContainer {
            println("afterContainer")
        }

        beforeEach {
            println("beforeEach")
        }
        afterEach {
            println("afterEach")
        }

        beforeTest {
            println("beforeAny/beforeTest")
        }
        afterTest {
            println("afterAny/afterTest")
        }

        beforeSpec {
            println("beforeSpec")
        }
        afterSpec {
            println("afterSpec")
        }

        context("Simple") {
            it("Simple test") {
                println("--- Simple test")
                1 shouldBe 1
            }
        }
    }
})
beforeContainer
beforeAny/beforeTest
beforeEach
beforeAny/beforeTest
--- Simple test
afterEach
afterAny/afterTest
afterContainer
afterAny/afterTest
afterSpec
  • before, afterともにContainer > Any/Test, Each > Any/Testの流れになっている
    • beforeとafterでstackの様にコールされるわけではない
  • beforeSpecが呼び出されない
    • 詳細を調べる
class ListenerSpec: DescribeSpec({
    // ...
    describe("listener hook check") {
        describe("Describe") {
            it("Simple test") {
                println("--- Simple test")
                1 shouldBe 1
            }
        }
    }
})
beforeContainer
beforeAny/beforeTest
beforeEach
beforeAny/beforeTest
--- Simple test
afterEach
afterAny/afterTest
afterContainer
afterAny/afterTest
afterSpec
  • Listener順序において、describeとcontextの差異は見られない
class ListenerSpec: DescribeSpec({
    describe("listener hook check") {
        describe("Describe") {
            it("List 1 test") {
                println("--- List-1 test")
                1 shouldBe 1
            }
            it("List 2 test") {
                println("--- List-2 test")
                1 shouldBe 1
            }
        }
    }
})
beforeContainer
beforeAny/beforeTest
beforeEach
beforeAny/beforeTest
--- List-1 test
afterEach
afterAny/afterTest
beforeEach
beforeAny/beforeTest
--- List-2 test
afterEach
afterAny/afterTest
afterContainer
afterAny/afterTest
afterSpec
  • Containerが消えた
class ListenerSpec: DescribeSpec({
    // ...
    describe("listener hook check") {
      describe("Describe") {
        context("Context") {
          it("Simple test") {
            println("--- Simple test")
            1 shouldBe 1
          }
        }
      }
    }
})
beforeContainer
beforeAny
beforeTest
beforeContainer
beforeAny
beforeTest
beforeEach
beforeAny
beforeTest
--- Simple test
afterEach
afterAny
afterTest
afterContainer
afterAny
afterTest
afterContainer
afterAny
afterTest
afterSpec
  • nestするとcontainer, any, testが追加される
class ListenerSpec: DescribeSpec({
    describe("listener hook check") {
      describe("Describe") {
        describe("Describe") {
          it("Simple test") {
            println("--- Simple test")
            1 shouldBe 1
          }
        }
      }
    }
})
beforeContainer
beforeAny
beforeTest
beforeContainer
beforeAny
beforeTest
beforeEach
beforeAny
beforeTest
--- Simple test
afterEach
afterAny
afterTest
afterContainer
afterAny
afterTest
afterContainer
afterAny
afterTest
afterSpec