问题标签 [android-instrumentation]

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 回答
827 浏览

java - app:transformClassesWithMultidexlistForDebugAndroidTest 运行仪器测试时出错

我正在尝试将手指放在android功能测试中。制作第一个简单的应用程序测试用例如下:

  • 我只是左键单击运行它,然后单击绿色箭头“运行应用程序”
  • 我选择了“调试”变体
  • 以及测试神器“Android Instrumental Test”
  • 我有“Geny Motion”,想用它运行测试。
  • Gradle 同步良好

  • => 但我运行测试用例,最后出现以下错误:

:app:transformClassesWithMultidexlistForDebugAndroidTest FAILED 错误:任务 ':app:transformClassesWithMultidexlistForDebugAndroidTest' 执行失败。com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'/Library/Java/JavaVirtualMachines/jdk1.7.0_75。 jdk/Contents/Home/bin/java'' 以非零退出值 1 结束

这是我的应用程序 gradle 文件:

这是项目 gradle 文件:

我环顾四周,但很难看出它可能是什么。

0 投票
2 回答
367 浏览

android - 如何在 attach() 中更改活动标题

我想运行具有不同语言环境的参数化仪器测试,以使用所有支持的语言运行相同的测试。

观察到的行为是该活动将具有第一次测试运行的本地化标题,也适用于随后的每次运行。因此,无论我的手机使用哪种语言,标题都会在第一次参数化测试运行时正确本地化,并且对于接下来的每个测试运行仍然相同。

虽然覆盖语言环境本身适用于任何资源,如果由.AndroidManifest.xml

活动似乎在 中设置了它们的标题attach,并且任何调用 attach 似乎都将标题缓存在应用程序首次启动的语言环境中。

由于资源总是得到正确本地化,解决方法是调用setTitle(R.string.title)或只是getActionBar().setTitle(R.string.setTitle),但我不想仅仅为了测试目的而更改活动。

问题:如何在第一次测试运行后更改启动活动的标题?如上所述,这似乎被缓存并且没有正确更新,并且杀死应用程序以重新启动它会使检测测试失败。

测试设置

整个测试项目可以在 GitHub 上找到Localization.java包含当前失败的单元测试以及此处描述的问题),并且将参数化单元测试与UIAutomator.

目标是在不太了解应用程序本身(UIAutomator)的情况下拍摄一批屏幕截图,并且也不必为测试修改应用程序。

更改语言环境:

我在每次测试之前成功地更改了语言环境,并且通过执行以下操作正确显示了我的文本,而且我有多个断言确保资源实际上是正确的语言环境。

什么不起作用:

我显然尝试在目标上下文、应用程序上下文和活动上以相同的方式设置语言环境(无论如何这可能为时已晚)。

我看到它attach是从 调用的Instrumentation,但只是创建一个新应用程序并尝试启动该活动也不会本地化标题。

0 投票
3 回答
1504 浏览

android - 如何运行单个 android 仪器测试用例?

不是单元测试,而是仪器测试。

我的应用程序有多种风格,所以我运行:

./gradlew connectedClientDebugAndroidTest运行我的仪器测试(风味名称是client)。

但我想运行一个名为MyActivityTestCase.java. 这可能吗?如果是运行它的命令是什么

0 投票
1 回答
1335 浏览

android - 在 AndroidManifest 元数据中指定自定义 RunListener 不起作用

目标

RunListener使用 Espresso 运行 Android 仪器测试时,自定义对测试失败执行自定义操作。

tl;博士

InstrumentationInfo.metaDatanull,即使ApplicationInfo.metaData有我的信息。为什么?

迄今为止的进展

我可以让我的 RunListener 使用以下 adb 命令:

这在此处的 AndroidJUnitRunner 文档中指定。

但是,该文档还指出,可以在AndroidManifest.xml元数据元素中指定 RunListener。到目前为止,我还没有成功地让它发挥作用。

AndroidManifest.xml

<application>我在我的元素中添加了以下内容main/AndroidManifest.xml

这没有任何效果。通过各种方式,我发现这些代码行(由清单使用AndroidJUnitRunnerRunnerArgs从清单中获取自定义元数据参数)

...给我一个null捆绑包。

我注意到生成的debug/AndroidManifest.xml没有我的元数据标签,所以,作为一个实验,我也将它添加到我的androidTest/AndroidManifest.xml文件中。看起来像这样:

...然后出现在生成的debug/AndroidManifest.xml像这样:

这也没有任何效果。

另一个实验

我创建了一个名为的自定义测试CustomAndroidJUnitRunner运行器,它扩展了 AndroidJUnitRunner,只是为了在引擎盖下达到峰值。如果我这样做:

...logcat 会说:

所以,ApplicationInfo.metaData有了。为什么不InstrumentationInfo.metaData呢?

0 投票
2 回答
5061 浏览

android - Espresso Instrumentation 测试 - 如何在测试后卸载或删除应用程序

我设置了 Espresso 仪器框架来运行我的 Android 功能自动化测试。对于每次测试,我都想在完成测试后登录应用程序并删除应用程序。

所以,我设置如下:

公共类 FirstSampleTest 扩展 BaseTest {

// 私有 final ElementUtils elementUtils;

0 投票
2 回答
5305 浏览

android - 拖放浓缩咖啡

是否可以通过 Espresso 执行拖放操作?我需要向下移动一个视图(直线)以便在我的自动化测试中接受一些条件。

0 投票
1 回答
992 浏览

android - 适用于 Android 的参数化检测测试

AndroidJUnit4 和 Parameterized 测试的答案链接到 Google 示例以使用@RunWith(Parameterized.class). 但是,这是一个简单的单元测试。如何运行参数化检测测试?

0 投票
2 回答
1372 浏览

android - 由于“android.content.res.Resources$NotFoundException”,检测运行失败

我尝试在 Android Studio 1.5.1 中使用 espresso 2.2.1 运行测试。当我运行 LoginActivityTest 时,我收到此错误:“android.content.res.Resources$NotFoundException”在 LoginActivity 调用 MyService.java 并且 MyService 需要整数资源(即 R.integer.number_of_days)时引起。此资源在 gradle(版本 1.5.0)模块的 R.integer.xml 文件中定义。

项目结构:

RootFolder/ ├----projectA/ │ ├----build.gradle │ ├----settings.gradle │ └----src/androidTest/java/.../LoginActivityTest │ └----src/main/java/.../LoginActivity │ └----Module/ ├----krill/ │ └----build.gradle │ ├----settings.gradle │ └----src/main/ | └----java/service/MyService.java | └----res/value/integers.xml │ └----otherModule/ └----build.gradle

我的测试课:

错误堆栈跟踪:

我该如何解决这个问题?

0 投票
2 回答
4481 浏览

android - 是否可以在 Android 中使用 Espresso 进行端到端测试?

在过去的一周里,我一直在寻找有关 Android 端到端测试的有用信息。虽然我找到了 UI Automator,但它并没有引起我的注意。

我正在开发一个应用程序,它的快乐路径包含 6 个活动。我想在主屏幕中创建我的 Booking 对象并将其移动到快乐的路径以检查其状态。我想我可以用MockWebServer模拟服务器响应。我看到的所有样本都在一次测试一项活动。

所以我的问题是我能够在一次测试中测试所有这些活动(快乐路径)吗?如果是,是否有任何样本?

0 投票
5 回答
12765 浏览

android - android.support.test.espresso.NoActivityResumedException:RESUMED阶段没有活动

我正在尝试为我的活动编写测试用例。我有几项活动,其中一项活动没有问题,而当我尝试对其他ActivityTest类运行测试时出现以下错误。

android.support.test.espresso.NoActivityResumedException:RESUMED阶段没有活动。您是否忘记启动活动。(test.getActivity() 或类似的)?

这是我的所有测试用例都失败的课程:

然而,这是我的另一个类,它的所有测试用例都通过了:

我不知道为什么上述类的测试通过而其他类失败。