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



我试图延迟变量(AppiumDriver服务)为我的测试ng测试在@BeforeSuite方法像这样:

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)
}
}

我的测试看起来像这样:

class MedicationsTests : BaseTest() {
fun test_01() {
// Test using `driver` variable
}
}

@BeforeSuite方法init(String)在测试开始之前运行(我看到打印输出),但随后我得到错误,当方法test_01()试图使用driver变量:

kotlin.UninitializedPropertyAccessException: lateinit property driver has not been initialized

它在@BeforeClass中工作得很好,但我想在整个套件中只运行一次初始化,而不是每个类一次…

有什么办法解决吗?

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

abstract class BaseTest {
companion object {
lateinit var driver: AppiumDriver<MobileElement>
}
}

最新更新