1

我对 Kotlin 和 Kotest 还是新手,我正在努力寻找一种方法来创建 BDD 测试风格。我的问题是框架如何能够创建可重用的给定步骤。例如:

class KotestTest1 : BehaviorSpec({
    given("State A") {
        // Verify the State A exists
        println("Verify the State A exists")
        `when`("Action A") {
            // Execute Action A
            println("Execute Action A")
            then("State => A1") {
                // Verify the state is now A1
                println("Verify the state is now A1")
            }
        }
    }
})


class KotestTest2 : BehaviorSpec({
    given("State A") {
        // Verify the State A exists
        println("Verify the State A exists")
        `when`("Action B") {
            // Execute Action B
            println("Execute Action B")
            then("State => B1") {
                // Verify the state is now B1
                println("Verify the state is now B1")
            }
        }
    }
})

所以在这里我有给定步骤“状态A”的代码重复。我想知道创建整个步骤的预期方式是什么。看起来 given(description: String) 是我必须重复的内容,因为println("Verify the State A exists")我只是将其提取到常用函数中。

我希望我可以更好地构建我的代码,以便我可以创建给定的步骤并在多个测试场景中使用它们。对此有何建议?

4

1 回答 1

2

我认为最常用的方法是将两个测试合并为一个,并在那里嵌套测试:

class KotestTest : BehaviorSpec({
    Given("State A") {
        When("Action A") {
            Then("State => A1") {

            }
        }
        When("Action B") {
            Then("State => B1") {
                
            }
        }
    }
})
于 2021-04-12T13:17:44.377 回答