问题标签 [instrumented-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 投票
2 回答
1472 浏览

android - Android Kotlin Espresso 在单元测试中断言预期活动抛出错误

我正在开发一个 Android 应用程序。我正在向我的应用程序添加仪器测试并测试是否使用 Espresso 启动了活动。但是我在断言使用 Espresso 测试框架启动活动时遇到错误。

我将以下快递包添加到我的应用程序 gradle 中

这是我的活动课

这是我的测试方法

当我运行测试时,出现以下错误。

我的代码有什么问题,我该如何解决?

我尝试将我的代码更改为以下内容以摆脱 Null 异常

然后我得到了这个错误

0 投票
1 回答
1568 浏览

android - Android单元测试活动是否以超时或延迟开始后不起作用

我正在使用 Kotlin 编程语言开发一个 Android 应用程序。我正在将仪器测试添加到我的项目中。现在,我在测试活动是否在延迟后开始时遇到问题。我正在使用 Espresso 进行仪器测试。

这是我的活动课

我试过这个

我收到了这个错误

我也试过这个

这次我收到了这个错误

那也不行。我该如何测试它?

0 投票
1 回答
56 浏览

android - 有没有办法停止在 Android 仪器测试 Kotlin (ActivityTestRule) 中启动活动

我正在使用 Kotlin 开发一个 Android 应用程序。我正在将仪器测试添加到我的项目中。现在,我正在寻找一种方法来启用/禁用启动活动的逻辑,因为它可以使我的测试以意想不到的方式表现。

这是我的测试课

这只是测试类的签名。正如您在代码中看到的,我正在测试 LoginActivity。单击按钮时,LoginAcitivy 正在启动另一个活动。有没有办法禁止在测试中启动活动。然后在另一种测试方法中,我可能会再次启用它。有没有办法做到这一点?

0 投票
1 回答
448 浏览

android - Android Kotlin 仪器测试测试是否在调用 finish() 启动另一个活动后结束/完成

我正在使用 Kotlin 开发一个 Android 应用程序。我正在我的项目中添加仪器测试。现在,我正在努力测试是否在启动另一个活动后没有打开一个活动。这是我的场景。

我有启动 LoginActivity 的 MainActivity。

这是 MainActivity 的代码

正如您在上面的代码中看到的,我在启动 LoginActivity 后调用了 finish() 方法来终止活动。我想测试是否在由主活动启动的登录活动中按下后退按钮,应用程序是否关闭并且它不会返回到主活动。

这是我的测试课

请注意代码中的注释。我喜欢断言主活动是否未打开,或者在登录活动中按下后退按钮时它不会返回主活动。我该如何测试它?

0 投票
1 回答
354 浏览

android - Android Instrumented 测试是否通过 onActivityResult 回调打开活动

我正在使用 Kotlin 开发一个 Android 应用程序。我正在为我的代码编写仪器测试。现在我正在努力为特定功能编写仪器测试。以下是我要为其编写测试的场景。

我有三个活动,LoginActivity、RegisterActivity 和 HomeActivity。LoginActivity 使用 startActivityForResult 方法启动 RegisterActivity。然后在RegisterActivity中,注册完成后,使用finishActivity方法完成活动。所以调用了LoginActivity类的onActivityResult回调。在 onActivityResult 中,它使用 startActivity 方法启动 HomeActivity。

那么,当在 RegisterActivity 中完成注册时,如何测试 HomeActivity 是否在 LoginActivity 的 onActivityResult 回调中启动?

这是我当前不完整的代码,试图测试该特定功能

但是上面的测试不起作用。它失败。如何正确测试我的场景?

这就是我在 RegisterActivity 类中完成活动的方式

这是 LoginActivity 类中的 onActivityResult 回调

这是错误

2019-10-21 14:51:08.642 25433-25461/com.example.memento E/TestRunner: ----- 开始异常 ----- 2019-10-21 14:51:08.642 25433-25461/com .example.memento E/TestRunner:junit.framework.AssertionFailedError:想要匹配 1 个意图。实际上匹配了 0 个意图。

当我使用实际设备手动测试时,一切都按预期工作。

0 投票
0 回答
74 浏览

android - 无法再在 Android Studio 中运行单独的插桩测试

大约两个月以来,我一直无法在 Android Studio 中运行单独的 UI 测试。右键单击测试名称,然后run <test name>给我错误No tests were found。如果我右键单击类名然后单击run <testing class name>,它会成功运行类中的所有测试。因此,为了只在一个类中运行一个单独的测试,我必须诉诸注释掉我不想运行的所有测试,然后从类名中单击运行,这很痛苦。这在几个月前曾经工作得很好。

我真的没有更多的信息可以去。唯一的输出是

0 投票
1 回答
48 浏览

firebase - 在插桩测试中,如何在禁用网络时使 Cloud Firestore 写入命令成功?

因此,我尝试仅将 Cloud Firestore 离线缓存用作我的仪器测试的 API,以避免在集成测试期间必须从服务器数据库读取和写入。

首先,在我的测试设置方法中,我调用了这个方法

然后,在每个相关测试开始时,我使用

在那个 put 方法中,我有以下代码:

我正在调用 set() 方法并等待成功的结果,以便能够返回操作成功,然后更新我的 UI。

发生的情况是缓存数据库写入正确,但“set()”函数超时,因为数据库处于脱机模式。我读过 Firestore 仅在正确写入服务器数据库时才确认成功。如果是这种情况,我不知道在严格以离线缓存模式运行时是否可以让这个调用不超时。

是否有解决方案让 Firestore 将本地缓存数据库视为事实来源并在离线模式下返回成功,仅用于测试?

0 投票
1 回答
472 浏览

android - 如何在Kotlin编程语言的Android Espresso中测试textview的背景是否是正确的可绘制集合xml资源

我正在使用 Kotlin 开发一个 Android 应用程序。我正在向我的应用程序添加仪器测试。如果在 XML 资源中设置正确的可绘制文本,我在测试 textview 的背景时遇到问题。

我正在像这样以编程方式设置文本视图的背景。

在 expresso 中,我想断言文本视图是使用正确的 XML 资源设置的。我怎样才能做到这一点?

0 投票
0 回答
219 浏览

android - Android 检测测试在每个测试方法的开头使用 GrantPermissionRule 手动授予权限

我正在使用 Kotlin 开发一个 Android 应用程序。我正在为我的应用程序编写仪器测试。我正在使用 GrantPermissionRule 在我的测试中授予权限,如下所示。

但是,这不符合我的要求。每次完成后,我都会清除所有授予的权限。另外,我喜欢测试未授予权限的场景。我像这样在我的测试中明确启动活动。

我喜欢在启动活动之后或之前使用 GrantPermissionRule 显式授予权限。我怎样才能做到这一点?

0 投票
0 回答
447 浏览

android - Android 测试编排器未找到任何测试

我正在使用 Kotlin 编程语言开发一个 Android 应用程序。我正在为我的应用程序编写仪器测试。我还使用测试编排器来运行我的检测测试。但是安装了修改Grandle文件的测试编排器后,我无法在Android Studio中运行测试。

我在 app.grandle 文件中添加了以下配置

有了这个

这是 MockTestRunner 类

导入 android.app.Application 导入 android.content.Context 导入 androidx.test.runner.AndroidJUnitRunner 导入 com.example.utils.MockApplicationController

然后,在 Android Studio 中,我尝试通过右键单击代码来运行测试,如下所示。 在此处输入图像描述

这是我运行测试时得到的。

从字面上看,没有运行测试。我的配置有什么问题,我该如何解决。如果我删除测试协调器安装,我可以运行测试并且它按预期工作。