问题标签 [android-jetpack-compose-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
377 浏览

android - 将 Compose 语义树打印到日志

我正在Jetpack Compose Codelab 中进行测试,但我无法使用节点上的函数打印语义树。printToLog我在androidTest包内使用此代码。

我已经使用标签检查了我的 LogCat调试详细过滤,"currentLabelExists"但语义树没有在日志上打印。

关于我可能会错过的任何想法。

0 投票
1 回答
340 浏览

android - 如何检查 Jetpack Compose UI 测试中是否选择了单选按钮?

有谁知道如何检查,在 Android UI 测试中为 Jetpack Compose 创建的 UI 选择了哪个单选按钮?

我通过附加的代码制作了一个单选按钮组,但我不知道如何识别 UI 测试选择了哪一个。

是否有某种断言返回单选按钮组的选定单选按钮?

0 投票
1 回答
216 浏览

android - 是否可以断言节点在 jetpack compose 测试中是可滚动的

执行测试时是否可以断言 jetpack compose 节点是可滚动的?

0 投票
1 回答
527 浏览

android - 如何通过 UI 测试读取 Jetpack Compose TextField 的语义值?

我是 Jetpack Compose 测试的新手,并试图弄清楚如何访问 an 的值以OutlinedTextField对它们执行 Instrumentation 测试:

我无法弄清楚访问和检查 EditFeild 的 SemanticsNode 中某些值的语法。

我正在使用以下仪器测试:

我想弄清楚如何访问这棵树中的各种项目:

这是我要测试的完整可组合:

0 投票
0 回答
86 浏览

android - 可变状态声明之间的区别

文档中,

在可组合对象中声明 MutableState 对象有三种方式:

  • val mutableState = 记住 { mutableStateOf(default) }
  • var 值记住 { mutableStateOf(default) }
  • val (value, setValue) = 记住 { mutableStateOf(default) }

这些声明是等价的,并作为语法糖提供给状态的不同用途。您应该选择在您正在编写的可组合物中产生最容易阅读的代码的那个。

我在撰写 UI 测试中使用这些。
测试以一种类型的声明成功,但以另一种声明失败。

代码

调试显示barcodeName使用选项 1 代码时该值未按预期更新。

注意:不使用remember,因为这是在撰写测试中。

0 投票
0 回答
218 浏览

android - IllegalStateException:在 Jetpack Compose 测试期间未初始化 FocusRequester

我有一个屏幕TextFields。我需要第一个TextField在屏幕显示时自动聚焦。

缩小的示例代码

该代码可以正常工作。

但是,在撰写 UI 测试中,我收到以下错误。

java.lang.IllegalStateException:
FocusRequester 未初始化。以下是一些可能的修复:

  1. 记住 FocusRequester: val focusRequester = remember { FocusRequester() }
  2. 您是否忘记添加 Modifier.focusRequester() ?
  3. 您是否试图在构图​​过程中请求焦点?应
    针对某些事件做出焦点请求。例如 Modifier.clickable { focusRequester.requestFocus() }

测试代码

0 投票
0 回答
70 浏览

android-jetpack-compose - 如何获得 Compose UI 测试的代码覆盖率?

得益于大量的Android 文档,我现在对 Jetpack Compose 中的 UI 测试有些熟悉,但我无法让 Android Studio 运行覆盖范围内的 Compose 测试。我们目前使用 Jacoco 作为覆盖工具来生成报告,但根据这个Github 问题,Compose 的覆盖似乎并不是团队的优先事项(遗憾的是:S)。

由于我们不想在评估代码覆盖率时将 UI 测试放在一边,有没有办法在 Android Studio 中为 Compose 测试启用代码覆盖率,无论是使用 Android Studio 还是外部工具/库?

0 投票
0 回答
19 浏览

android - SemanticsNodeInteraction.captureToImage() 根据设备/可组合返回略有不同的结果

我的目标是测试我的可组合物的颜色。由于某种原因,下面的断言在特定设备/可组合上失败(例如,Composable1 在 Device1 和 Emulator1 上传递,Composable2 在 Device1 上失败,但在 Emulator1 上传递)。颜色差异很小(例如#3F3C34 / #403C34)。这个问题的原因可能是什么?除了允许颜色断言略有不同之外,有什么方法可以获得一致的结果?

compoasable 中使用的预期颜色和颜色是从 colors.xml 中获取的。

0 投票
1 回答
38 浏览

android - 撰写:AdvanceTimeBy 不适用于动画

我有两个Boxes 和一个Button。单击Button会切换一个标志,并在这些盒子上触发AnimatedVisibility动画。

代码

输出

在此处输入图像描述

现在我想编写一个测试来检查两个框是否在过渡中间可见。所以我写了一个这样的测试

但它在onNodeWithTag("red_box").assertExists()(2nd)失败。

知道为什么吗?

0 投票
1 回答
179 浏览

android - 撰写 UI 测试 - 如何断言文本颜色?

我正在尝试Text在我的组件上测试我可以用不同的颜色打印它,所以在我的测试中我正在验证它是否获得了预期的颜色。我正在寻找一种返回颜色的方法,但我没有找到任何方法。

从现在开始,我断言文本是正确的并且可见性是正确的,但是当试图找到获得颜色的方法时,我变得太深了,我正在寻找一个更简单的解决方案。

我已经检查过我可以做一些类似.fetchSemanticsNode().layoutInfo.getModifierInfo()的事情Modifier,也许从那里我可以得到颜色,但它可能太多了。另外我发现这个.captureToImage()也许我可以在上面涂上颜色,但是由于我必须放置像素,所以我认为这不是办法。

有什么简单的方法可以得到吗?