当前位置: 首页 > 知识库问答 >
问题:

Lateinit变量未在TestNG的@BeForeSuite中初始化

缑泓
2023-03-14

我试图在@beforeSuite方法中为我的testNG测试延迟init变量(AppiumDriver服务),如下所示:

abstract class BaseTest {

    lateinit var driver: AppiumDriver<MobileElement>

    @Parameters("platform")
    @BeforeSuite(alwaysRun = true)
    fun init(platform: String) {
        Configuration.isIOS = platform.lowercase() == "ios"
        driver = <driver initialization>
        println(driver)
    }
}

我的测试如下所示:

kotlin prettyprint-override">class MedicationsTests : BaseTest() {
    fun test_01() {
        // Test using `driver` variable
    }
}
kotlin.UninitializedPropertyAccessException: lateinit property driver has not been initialized

共有1个答案

邬良才
2023-03-14

TestNG将为每个测试创建一个新的BaseTest类实例。如果你想共享你的驱动程序-让它静态。示例:

abstract class BaseTest {
    companion object {
        lateinit var driver: AppiumDriver<MobileElement>
    }
}
 类似资料:
  • 我正在将一个项目从java迁移到kotlin,该项目使用了许多可能为空的变量,并且在与用户或外部作业进行一些交互之前不会初始化它们。 我试图使用kotlin null安全优势,并且我试图避免在源代码中使用<code>nulllateinitvar location:location?=空 我这样做是为了避免使用< code >?每次我需要使用这些变量时。现在的问题是...如果变量没有初始化会发生什

  • 因为我是android开发新手,所以我不知道如何在使用lateinit变量之前初始化它。在此之前,我尝试过执行,就像这个github中提到的,但没有成功。所以现在我希望问题出在初始化textInput变量上。

  • 我在这里看到过类似的问题,如果这看起来像是重复的,我很抱歉,但是类似问题的答案对我没有帮助。所以我有一个方法,它是类的一部分。这里是: 错误表明变量min可能尚未初始化。我不明白这怎么可能是真的。我觉得变量不可能不在for循环之外初始化。请帮忙。谢谢

  • 我想知道是否有一种方法可以检查变量是否已经初始化。例如:

  • 我想知道是否有办法检查变量是否已初始化。例如: