【问题标题】:Lateinit variable is not initialized in TestNG's @BeforeSuiteLateinit 变量未在 TestNG 的 @BeforeSuite 中初始化
【发布时间】:2021-12-11 16:54:26
【问题描述】:

我正在尝试在 @BeforeSuite 方法中为我的 testNG 测试延迟初始化变量(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)
    }
}

我的测试如下所示:

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 中工作得非常好,但我只想在整个套件中运行一次此初始化,而不是每个班级一次...

有什么办法解决吗?

【问题讨论】:

    标签: java kotlin testng appium


    【解决方案1】:

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

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

    【讨论】:

    • 这解决了我的问题,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2020-09-18
    • 2023-03-21
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多