gpt4 book ai didi

Android Jetpack compose 如何测试背景颜色

转载 作者:行者123 更新时间:2023-12-05 00:17:59 38 4
gpt4 key购买 nike

我有一个设置背景颜色的组合,我想测试一下。

@Composable
fun MyComposableButton(
enabledColor: Color,
disableColor: Color,
isEnabled: Boolean = true,
) {
val buttonBackgroundColor = if (enabled) enabledColor else disableColor
Button(
...
enabled = enabled,
colors = ButtonDefaults.textButtonColors(
backgroundColor = buttonBackgroundColor
)
) { ... }
}
我期待编写如下测试: verifyEnabledBackgroundColorverifyDisabledBakcgroundColor .
我在撰写测试中找不到任何直接可用的断言,并且在尝试创建自己的断言时,我发现 SemanticMatcther使用 SemanticNode ,但构造函数是最新的内部的,所以这是行不通的。
我尝试 mock Color但我不能,根据 this answer需要高 API 级别,这对我的项目来说是不行的。
如何测试设置可组合的背景颜色?

最佳答案

[更新] 请阅读其他答案 https://stackoverflow.com/a/72629280/4017501
经过多次尝试和错误,我找到了一种方法。有一个扩展captureImage具有色彩空间。有了它,我们可以找到颜色名称并做出相等的断言。
但是它有一些限制:它是节点下面的表面,因此多个节点或渐变可能不起作用。

fun SemanticsNodeInteraction.assertBackgroundColor(expectedBackground: Color) {
val capturedName = captureToImage().colorSpace.name
assertEquals(expectedBackground.colorSpace.name, capturedName)
}
我为可重用性做了一个扩展,例如:
composeTestRule.setContent {
...
}

composeTestRule.onNodeWithText(someText).assertBackgroundColor(YourColor)
请注意,这可能有效,因为在测试中我们确保通过我们的主题:
composeTestRule.setContent {
OurSuperCoolTheme { //your compose }
}

关于Android Jetpack compose 如何测试背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70682864/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com