标签: switch-component

Android Compose:如何在单元测试中验证开关是打开还是关闭

我在可组合项中有一个 Switch:

Switch(
    checked = false,
    modifier = Modifier.testTag("mySwitch")
)
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过组合单元测试来验证它:

composeTestRule.onAllNodesWithTag("mySwitch")
    .assertAll(isToggleable() and isOff())
Run Code Online (Sandbox Code Playgroud)

但是,它会失败,但出现以下异常:

java.lang.AssertionError: Failed to assertAll((ToggleableState is defined) && (ToggleableState = 'Off'))
Found '1' nodes not matching:
1) Node #8 at (l=955.0, t=387.0, r=1054.0, b=450.0)px, Tag: 'switch'
Has 4 siblings
Selector used: 'TestTag = 'mySwitch''
Run Code Online (Sandbox Code Playgroud)

显然,该开关既不能切换也不能“开/关”。我还分别检查了assertIsToggleableassertIsOff,但都失败了。

我已经验证 Switch 对于测试中使用的 UI 状态是可见的。

为什么我的测试失败?应该可以轻松测试一个该死的 Switch。开关正是“可切换”的定义。那么我该如何测试它,我应该使用自定义语义属性吗?


免责声明:这个问题与这个问题不同。我想验证 Switch 状态,而不是单击它(我稍后会尝试)

android unit-testing android-jetpack-compose switch-component

6
推荐指数
1
解决办法
1829
查看次数