Lateinit 变量未在 TestNG 的 @BeforeSuite 中初始化
Posted
技术标签:
【中文标题】Lateinit 变量未在 TestNG 的 @BeforeSuite 中初始化【英文标题】:Lateinit variable is not initialized in TestNG's @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
中工作得非常好,但我只想在整个套件中运行一次此初始化,而不是每个班级一次...
有什么办法解决吗?
【问题讨论】:
【参考方案1】:TestNG 将为您每次测试创建一个新的 BaseTest 类实例。 如果您想共享您的驱动程序 - 将其设为静态。示例:
abstract class BaseTest
companion object
lateinit var driver: AppiumDriver<MobileElement>
【讨论】:
这解决了我的问题,非常感谢以上是关于Lateinit 变量未在 TestNG 的 @BeforeSuite 中初始化的主要内容,如果未能解决你的问题,请参考以下文章