首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用kotlintest编写beforeEach和beforeClass

如何用kotlintest编写beforeEach和beforeClass
EN

Stack Overflow用户
提问于 2018-07-09 07:08:47
回答 3查看 8.3K关注 0票数 6

给出了kotlin-测试github文档的例子,但我在这里没有看到beforeEach或beforeClass的概念。我想明白,

  • 如何在每次测试之前执行一次代码/方法
  • 如何在每个测试类之前执行一次代码/方法
代码语言:javascript
复制
class MyTests : StringSpec({
  "length should return size of string" {
    "hello".length shouldBe 5
  }
  "startsWith should test for a prefix" {
    "world" should startWith("wor")
  }
})
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-15 07:46:45

非常类似于您自己的答案@JTeam,但是使用init {}构造函数块声明测试,然后可以在类中直接覆盖方法。

代码语言:javascript
复制
class MyTest : StringSpec() {

  override fun beforeTest(description: Description) {
    super.beforeTest(description)
    println("Before every spec/test case")
  }

  override fun beforeSpec(description: Description, spec: Spec) {
    super.beforeSpec(description, this)
    println("Before every test suite")
  }

  override fun afterTest(description: Description, result: TestResult) {
    super.afterTest(description, result)
    println("After every spec/test case")
  }

  override fun afterSpec(description: Description, spec: Spec) {
    super.afterSpec(description, spec)
    println("After every test suite")
  }

  init {
    "test should run " {
      "Hello".shouldHaveLength(4)
    }

    "test2 should run " {
      "Hello World".shouldHaveLength(10)
    }
  }
}
票数 13
EN

Stack Overflow用户

发布于 2021-11-17 10:19:56

在较新版本的Kotest (我认为从4.0.0开始)中,TestCofiguration上有lifecylce函数,不再需要init块:

代码语言:javascript
复制
import io.kotest.core.spec.style.StringSpec
import io.kotest.matchers.string.shouldHaveLength

class MyTest : StringSpec({
    beforeTest {
        println("Before every spec/test case")
    }

    beforeSpec {
        println("Before every test suite")
    }

    afterTest {
        println("After every spec/test case")
    }

    afterSpec {
        println("After every test suite")
    }

    "test 1 " {
        println("run test 1")
        "Hello" shouldHaveLength 4
    }

    "test 2 " {
        println("run test 2")
        "Hello World" shouldHaveLength 10
    }
})

更多信息

票数 4
EN

Stack Overflow用户

发布于 2018-07-09 07:23:43

在github文档和kotlin-test框架源代码中做了一些研究之后,下面是编写beforeTest、beforeSpec、afterTest、afterSpec的代码。

代码语言:javascript
复制
class MyTest : StringSpec({

    "test should run " {
        "Hello".shouldHaveLength(4)
    }

    "test2 should run " {
        "Hello World".shouldHaveLength(10)
    }
}) {
    override fun beforeTest(description: Description) {
        super.beforeTest(description)
        println("Before every spec/test case")
    }

    override fun beforeSpec(description: Description, spec: Spec) {
        super.beforeSpec(description, this)
        println("Before every test suite")
    }

    override fun afterTest(description: Description, result: TestResult) {
        super.afterTest(description, result)
        println("After every spec/test case")
    }

    override fun afterSpec(description: Description, spec: Spec) {
        super.afterSpec(description, spec)
        println("After every test suite")
    }
}

这看起来不雅致,如果有任何方法可以使它优雅,请张贴它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51239876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档