问题标签 [android-unit-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 回答
707 浏览

android - Robolectric 启动一个有观察者的片段

如何使用 Robolectric 在测试范围内使用 LiveData 观察者启动片段

分段

我的测试使用 RobolectricTestRunner,因此我可以在测试范围内启动片段。

尝试运行测试时出现以下错误。我尝试在实例化 FragmentScenario 之前和之后将 Main looper 设置为空闲。

我试过以下

  • 为 Main Looper 实现一个影子类。使用 Looper 模式注释类。
  • 添加场景状态

我的测试依赖项。

我用来寻找解决方案的链接“ 测试 LiveData 转换? https://jeroenmols.com/blog/2019/01/17/livedatajunit5/

0 投票
0 回答
70 浏览

android - 如何测试在浓缩咖啡中单击视图时是否调用函数

在使用 Robolectric、Espresso 和 Mockito 的单元测试中,如何验证单击按钮时函数是否运行。

MyFragmentUnitTest,位于测试范围内。

0 投票
0 回答
39 浏览

android - Mokito 比较失败

测试方法

使用此测试方法,我需要验证该firebaseCrashlytics.recordException(exception)方法是否调用过一次。

方法

这是我用来向 firebase 报告非致命异常的方法。

测试用例的错误日志

这里显示比较失败。但是我不明白firebaseCrashlytics.setCustomKey是如何进行比较的,因为我只需要验证firebaseCrashlytics.recordException

如果有人知道我做错了什么。这对我会有很大的帮助。提前致谢。

0 投票
0 回答
32 浏览

java - Android广播接收器单元测试IntentAction为空

我是 Android 新手,正在尝试测试广播接收器。下面的代码中的 Intent 操作为 null,并且通过 NullPointerException。

0 投票
1 回答
109 浏览

android-studio - java.lang.NoClassDefFoundError: androidx/sqlite/db/SupportSQLiteQuery 在昨天工作的单元测试中

这个问题的答案不是“Android 单元测试无法访问诸如 Room 数据库之类的 Android 堆栈模块,因为在您的桌面上它们都被删除了。”

我有一堆单元测试来测试碰巧在 Dao 类中的静态方法 - 调用它FooDao。他们都过去了一年,直到今天,当 Android Studio 编辑器调用它们时,它们停止了过去。当命令行测试调用它们时它们仍然通过,但编辑器报告:

当单元测试到达FooDao.innocentStaticMethod(). 就像我说的,在FooDao不调用任何真实的 Room 方法的情况下访问该类,以前在单元测试中工作。

长期的解决方法是重构我的代码,以便FooDao只包含真正的 Room 调用。但是为什么 Android Studio 的 test runner 突然停止工作了呢?版本为 Android Studio 4.2 RC 1,构建于 2021 年 3 月 23 日。和targetSdkVersion 30.

0 投票
0 回答
1122 浏览

android - 主 Looper 将未执行的 runnables 排队

我正在尝试在我的 RecyclerView 上运行单元测试。对于我的第一个测试,我想看看是否显示了 RecyclerView。

运行测试后,我收到以下错误。

这似乎与在片段中提交列表的 LiveData 观察者有关。如果我注释掉提交功能,测试将运行。

片段。

面视图模型

此链接表明 Robolectric 将默认为 LooperMode.LEGACY 行为,但这可以通过将 @LooperMode(NewMode) 注释应用于测试包、测试类或测试方法或通过“robolectric.looperMode”系统属性来覆盖。运行测试时,我仍然遇到同样的错误。

0 投票
1 回答
39 浏览

unit-testing - mockito 如何覆盖测试静态函数的内部 if 块

有一个静态函数isNotificationsEnabled ,它在通道 for 循环中有一个 if 块来检查通知通道是否有:

试图有另一个静态函数getNotificationChannels来返回频道列表,并进行以下测试,但它不起作用。

显然

不起作用。如何测试 if 块?

0 投票
0 回答
27 浏览

android - 单元测试中的调用目标异常

我是单元测试的新手。请让我了解错误在哪里。

FirebaeAuthRespository.java

视图模型

登录活动.java

LoginViewModelTest.java

我得到这个错误。

调用视图模型测试firebas登录注册功能的错误是什么。请告诉我。提前致谢。

0 投票
0 回答
28 浏览

junit - 如何正确导入和使用远程测试库?

我使用 jitpack 创建了远程库。

该库包含这些测试库。

我正在尝试在导入库后进行测试。

但是,test/它似乎无法识别测试库。那么,我该如何解决这个问题呢?

0 投票
3 回答
1077 浏览

android - 将 Android Studio 更新到 ArticFox 后运行单元测试时出现 NoClassDefFoundError | 2020.3.1

未收到测试事件错误:

将 android studio 更新到 ArticFox 后运行单元测试时出现 NoClassDefFoundError | 2020.3.1。

以下是完整的错误:

我刚刚下载了最新的 android studio,克隆了一个项目并尝试运行单元测试。

我怎样才能解决这个问题?我正在使用嵌入式 JDK(即 Java 11.0)。