Spek - 变量未在测试中初始化

时间:2018-03-20 22:51:46

标签: kotlin spek

以下代码无法编译:

  describe("something") {
    context("when something") {
      var a: SomeType

      beforeEachTest { 
        a = someNewMutableObject
      }

      it("should do something") {
        assertTrue(a.something()) // variable a not initialized
      }
    }
  }

如何解决这个问题?我可以为变量分配什么来消除警告?

1 个答案:

答案 0 :(得分:1)

只需在使用前初始化的变量上使用lateinit修饰符。

  describe("something") {
    context("when something") {

      lateinit var a: SomeType

      beforeEachTest { 
        a = someNewMutableObject
      }

      it("should do something") {
        assertTrue(a.something()) // variable a is okay to use here
      }
    }
  }

PS。只有Kotlin 1.2提供lateinit局部变量

在Kotlin 1.1中,您应该将其初始化为默认值或null(也使其成为可空类型)。