问题标签 [androidx-test]

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 投票
0 回答
204 浏览

android - Android UI 测试 - ActivityScenarioRule 比 ActivityScenario 慢得多

我正在进入 Android UI 测试,我学会了两种启动活动的方法:ActivityScenario在每个测试中,ActivityScenarioRule一次,用@Rule.

一开始我用过ActivityScenario,成功了。每个测试大约需要 2-4秒才能完成:

然后我决定切换到ActivityScenarioRule,因为我编写了相当多的测试,并且根据规则,我不需要ActivityScenario为每个测试创建一个:

如果我使用这条规则运行测试,每个测试大约需要40-50 秒,并且大部分时间都花在了这个屏幕上:

在此处输入图像描述

测试在模拟器上运行。我不知道这个屏幕是什么,为什么在使用时会占用这么多时间ActivityScenarioRule。在每次测试中使用ActivityScenario时,此屏幕不会显示并且测试完成速度很快。请帮忙,我错过了什么?

0 投票
0 回答
40 浏览

retrofit2 - 将 ActivityTestRule 更新为 ActivityScenario

ActivityTestRule 已被弃用,它是我正在学习的教程中使用的工具。

文档说我应该可以直接将其更改为,ActivityScenario.launch(Class)但是我调用的activityRule.launchActivity(null)行将无法运行。

我将如何更新这个?

0 投票
1 回答
130 浏览

android - 在测试类中膨胀 ViewBinding 时出错:Binary XML file line #38: Binary XML file line #38: Error inflating class

我正在尝试为使用 ViewBinding 的 RecyclerView.ViewHolder 类编写单元测试,但我在测试类中膨胀 ViewBinding 时遇到问题,在运行测试时出现此错误: Binary XML file line #38: Binary XML file line #38: Error inflating class <unknown> Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 5: TypedValue{t=0x2/d=0x7f04015d a=2}

我在测试类中找不到 ViewBinding inflate 的代码示例,这可能吗?我找到了这个 StackOverflow 线程,但它使用 PowerMock 来模拟 ViewBinding 类。我在我的项目中使用 mockK,我认为在我的情况下使用真正的 ViewBinding 实例会更好。

我的 ViewHolder 看起来像这样:

我的测试课看起来像这样。我正在使用MockKRobolectric来获取应用程序上下文

编辑:这是来自@tyler-v 的答案的 mockK 版本

0 投票
0 回答
42 浏览

android - 使用 ActivityScenarioRule 在活动完成之前和之后运行代码的新首选方法是什么?

以前使用ActivityTestRule,可以覆盖beforeActivityLaunchedafterActivityFinished以控制所有测试之前和之后的应用程序状态(例如,实现一个扩展ActivityTestRule将在所有测试中使用的自定义规则类)。在标记了ActivityScenarioRulefinal并且没有这些protected方法的情况下,这个逻辑现在在哪里/如何移动到关于一个活动之前和之后的控制方式?如果要编写适用于所有测试的自定义规则,现在推荐的方法是什么?

0 投票
1 回答
14 浏览

testing - 如何断言活动已用浓缩咖啡完成

我想在单击按钮后断言活动已完成。例如:如果用户单击了 ID 为 R.id.finish 的按钮,则活动结束。

我正在尝试使用 ActivitySenerio 和 Espresso 查找 api,但这些都没有帮助。

参考: