Lateinit 变量未在 TestNG 的 @BeforeSuite 中初始化
Lateinit variable is not initialized in TestNG's @BeforeSuite
我正尝试在 @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)
在测试开始前 运行ning(我看到打印的输出),但是当方法 test_01()
正在尝试时我遇到了错误使用 driver
变量:
kotlin.UninitializedPropertyAccessException: lateinit property driver has not been initialized
它在 @BeforeClass
中工作得很好,但我想 运行 每个套件只初始化一次,而不是每个 class...
有什么解决办法吗?
TestNG 将在每个测试中为您创建一个新的 BaseTest 实例 class。
如果您想共享您的驱动程序 - 将其设为静态。示例:
abstract class BaseTest {
companion object {
lateinit var driver: AppiumDriver<MobileElement>
}
}
我正尝试在 @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)
在测试开始前 运行ning(我看到打印的输出),但是当方法 test_01()
正在尝试时我遇到了错误使用 driver
变量:
kotlin.UninitializedPropertyAccessException: lateinit property driver has not been initialized
它在 @BeforeClass
中工作得很好,但我想 运行 每个套件只初始化一次,而不是每个 class...
有什么解决办法吗?
TestNG 将在每个测试中为您创建一个新的 BaseTest 实例 class。 如果您想共享您的驱动程序 - 将其设为静态。示例:
abstract class BaseTest {
companion object {
lateinit var driver: AppiumDriver<MobileElement>
}
}