问题标签 [android-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 投票
14 回答
47474 浏览

android - 如何跨多个活动测试 Android 应用程序?

我们正在构建一个复杂的 Android 应用程序,该应用程序由分布在许多活动中的许多屏幕和工作流组成。我们的工作流程类似于您在银行的 ATM 机上看到的工作流程,例如,有一个Activity登录界面可以转换到一个主菜单Activity,该菜单可以根据用户的选择转换到其他活动。

由于我们有如此多的工作流程,我们需要创建跨越多个活动的自动化测试,以便我们可以端到端地测试工作流程。例如,使用 ATM 示例,我们想输入一个有效的 PIN,验证将我们发送到主菜单,选择提取现金,验证我们是否在提取现金屏幕上等等,最终找到自己返回主菜单或“注销”。

我们玩弄了 Android(例如ActivityInstrumentationTestCase2)和Positron附带的测试 API ,但似乎都无法测试超出单个 的范围Activity,虽然我们可以在这些工具中找到一些用于某些单元测试的实用程序,但他们赢了不能满足我们对跨越多个活动的测试场景的需求。

我们对 xUnit 框架、脚本、GUI 记录器/回放等持开放态度,并希望得到任何建议。

0 投票
6 回答
25686 浏览

android - 在 Android 中测试 GPS

您如何在Android中测试 GPS 应用程序?我们可以使用Android 模拟器对其进行测试吗?

0 投票
5 回答
15824 浏览

android - Android 上的测试数据库:ProviderTestCase2 还是 RenamingDelegatingContext?

我已经使用SQLiteOpenHelper某些类中的 android.database 包(使用模式 DAO)实现了对数据库的访问。

我使用 an 为这些类编写了一些 junit 测试,AndroidTestCase但这会导致测试使用与应用程序相同的数据库。

我读到ProviderTestCase2orRenamingDelegatingContext可用于单独测试数据库。不幸的是,我找不到任何很好的教程/示例来展示如何使用 ProviderTestCase2/RenamingDelegatingContext 测试数据库。

任何人都可以指点我某处或给我一些提示或分享一些用于数据库测试的代码吗?!

啦啦啦啦!!乔治奥

0 投票
7 回答
15642 浏览

android - 在 Android 中效果最好的模拟库/框架?

我正在使用第三方库 (Twitter4j) 开发 Android 应用程序。我希望能够在 JUnit 和功能测试中模拟这些对象(也是我创建的对象)。

你有使用一些模拟库的好经验,你可以推荐它们吗?

0 投票
2 回答
6547 浏览

android - 从 AndroidTestCase 调用活动

我正在编写一个 android 测试用例,它需要对正在测试的 Activity 执行单独的 Activity(不是为了测试,而是为了获得对 contentresolver 的访问权限,以便我可以更改一些电话设置)。

是否有可能从测试用例或以其他方式开始活动。

我知道用于测试活动的 AndroidTestCase 类,我在测试中使用它,但是我需要使用 ContentResolver 来更改电话设置,然后测试被测活动的反应,所以我需要另一个应用程序组件来更改这些设置。

注意:我释放了多个活动测试背后的复杂性(需要一个 ActivityManager),但我只想使用它的方法来更改设置,因此我什至可以在 onCreate 方法中拥有逻辑。

0 投票
1 回答
2183 浏览

android - 在测试项目中存储测试文件

我编写了一些使用 XML 文件的测试。我有两个项目,一个是代码,第二个是测试。我想将此 XML 文件(它们包含测试期间使用的一些数据)存储在测试项目中。但这是不可能的,因为似乎只有 src 项目中的文件才会加载到设备中。有谁知道解决这个问题的方法?

0 投票
0 回答
1253 浏览

android - 在 AndroidTestCase 中设置自定义上下文

我正在尝试测试我的自定义ContentProvider,它只在某个时间点更新一个项目。

为了测试shouldUpdate分支,我需要在我的应用程序中恢复时间并设置自定义日期。我无法 stub out System.currentTimeMillis(),所以我在我的 Application 对象中放置了一个方法,我正在尝试setContext()这样AndroidTestCase

}

但是,当我调用getApplicationContext().currentTimeMillis()我的提供程序时,它会返回该方法的真正实现,System.currentTimeMillis()而不是我在AndroidTestCase.

我究竟做错了什么?

ps 我知道 ProviderTestCase2,但我也在我的提供者中访问 SharedPreferences,对于那些 ProviderTestCase2 返回 null。这就是我使用 AndroidTestCase 的原因。

0 投票
0 回答
345 浏览

android - 如何测试家庭应用程序?

是否有可能测试“家庭”应用程序?

作为测试结果,我得到:

当我手动终止它的进程时,它会自动重新启动。也许这是测试应用程序无法附加到Home应用程序的原因?

0 投票
3 回答
6767 浏览

android - 使用带有库项目的 ant 进行 Android 单元测试

似乎最新的 android SDK 工具仍然不能正确支持包含链接库项目的应用程序的测试。

我有一个具有以下设置的项目:

TestLib (android 库项目) <- TestMain (android 项目) <- TestMainTest (android 单元测试项目)

我在 Eclipse 中创建了所有这些项目,然后用于android update (test-/lib-)project ...生成build.xmlet。人。

一旦您在 TestMain (InheritAddition.java在我的示例中)中有一个继承自 TestLib ( Addition.java) 中的类并且您想在单元测试 ( InheritAdditionTest.java) 中引用该类时,问题就开始了。

测试库

测试主程序

测试主测试

在命令行上构建时,结果如下:

我找到了一些适用于 eclipse 的解决方法:

当测试项目在 libs 目录中有 jar 时,无法构建和运行使用“ant create test-project”创建的 android 测试项目

这就是诀窍,但我正在寻找一种适用于 ANT 的解决方案(更准确地说,我正在寻找一种同时适用于两者的解决方案)。

记录的方法(通过更改 build.xml 以将主项目中的 jar 包含到类路径中)在此处不适用,因为示例项目不使用任何库 jar(我也相信这个特殊问题现在已通过 SDK 工具修复r16)。

我想解决这个问题的蛮力方法是尝试以某种方式删除 to 的依赖项TestMainTestTestLib通过修改project.properties),而是设法破解构建脚本以将那些构建的 jar 放入类路径(所以用-compile修改的东西替换目标的类路径javac)。由于我长期以来一直试图跟上 android SDK 工具链的变化,因此这并不是我最喜欢的选择,因为它 a) 相当复杂,b)build.xml每当工具链发生变化时(这种情况非常频繁),都需要不断地修改。

所以我正在寻找如何在不使用大锤的情况下让这样的设置工作的想法。也许我遗漏了一些非常明显的东西,但对我来说这个用例是相当标准的,我很难理解为什么不支持开箱即用。

0 投票
4 回答
17305 浏览

java - 为 Robolectric 的 SharedPreferences 提供测试数据

刚开始使用 Robolectric,它似乎正是我所需要的。但是,我在使用 SharedPreferences 方面遇到了一些障碍。

我有两个测试用例

  1. Activity 需要一个新的/空的 sharedPreferences

  2. Activity 期望 sharedPreferences 中已经包含一些数据

对于测试用例 1,测试按预期通过,一切都很好:)

但是,对于测试用例 2,我似乎无法找到一种向 Robolectric 提供一些假数据的好方法,因此 Activity 能够访问这些假数据。

这感觉像是一个非常常见的用例,但我似乎无法弄清楚该怎么做!