在KotlinJUnit 5测试中获取在全局变量之前构建的@规则

vuktfyat  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(135)

有没有可能让@规则在任何声明的全局变量之前构建?我试过:

@Rule 
@Before // This Causes an Error
val rule = SomeAndroidComposeTestRule()

private val globalVariable = GlobalVariableClass()

我需要先运行规则,因为我收到一个错误,即我正在使用该globalVariable测试的Composable需要测试规则。调试时出现了各种错误。是否存在允许先运行@规则的@?

mxg2im7a

mxg2im7a1#

如果代码片段中的这五行是来自测试类的连续五行,那么globalVariable就不是全局变量,而是测试类的属性。
无论如何,没有办法强制某个@Rule在属性初始化器之前执行。因此,你需要延迟初始化,比如到一个@Before注解的函数中:

@Rule 
val rule = SomeAndroidComposeTestRule()

private lateinit var globalVariable: GlobalVariableClass

@Before
fun setUp() {
  globalVariable = GlobalVariableClass()
}

相关问题