问题标签 [android-espresso]

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

android - 由于“java.lang.IllegalAccessError”,检测运行失败。Gradle + 浓缩咖啡

我想在 gradle 中使用 espresso 测试。为此,我尝试使用Jake Wharton 的双份浓缩咖啡,但它不起作用。

我读过它可能是重复的依赖项,但我已经排除了 Dagger 和 Support-v4 库,就像 Jake 在他的自述文件中所写的那样。

谁能给我建议这里可能出了什么问题?

测试类:

构建.gradle:

试验结果:

日志猫:

0 投票
1 回答
2348 浏览

android - Espresso CursorAdapter:点击第一项

我无法单击ListviewCursorAdapter. 这是我尝试过的:

...这就是我得到的:

com.google.android.apps.common.testing.ui.espresso.PerformException:在视图“可从类分配:android.widget.AdapterView”上执行“加载适配器数据”时出错。在 com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler 的 com.google.android.apps.common.testing.ui.espresso.PerformException$Builder.build(PerformException.java:67)。 getUserFriendlyError(DefaultFailureHandler.java:57) 在 com.google.android.apps.common.testing.ui.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:40) 在 com.google.android.apps.common.testing。 ui.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:159) 在 com.google.android.apps.common.testing.ui.espresso.ViewInteraction.doPerform(ViewInteraction.java:90) 在 com.google.android.apps。 common.testing.ui。

0 投票
0 回答
787 浏览

android - 当 dagger 已包含在编译依赖项中时,将 Espresso 添加到 instrumentTest 依赖项

我有一个 gradle 项目(使用 Gradle 1.9),我正在尝试将 espresso(来自https://github.com/JakeWharton/double-espresso)添加到我的项目中,该项目在其编译依赖项中有 dagger。

这是我的依赖结构:

依赖{

}

现在我的问题是当我在测试开始后不久通过“gradle connectedInstrumentTest”开始测试时(我看到活动被触发),我收到以下错误:

...activity.MainActivityTest > testItemText[Nexus 5 - 4.4.2] FAILED java.lang.IllegalStateException:创建对象图时出错:com.google.android.apps.common.testing.ui.espresso.FailureHandler 无法绑定com.google.android.apps.common.testing.ui.espresso.base.BaseLayerModule 类所需的密钥 com.google.android.apps.common.testing.ui.espresso.FailureHandler :ClioAndroid:connectedInstrumentTest FAILED

当我注释掉排除组时:'com.squareup.dagger' 我得到另一个错误: Instrumentation run failed due to 'java.lang.IllegalAccessError' 这是根据“ http://b.android.com/65445 ”预期的。

我认为问题是添加“排除组:'com.squareup.dagger'”与浓缩咖啡的匕首对象图相混淆。我一直无法找到解决方法。任何帮助,将不胜感激。

0 投票
1 回答
1413 浏览

android - 测试 Android 应用程序时无法注入点击

在使用 Android 测试框架(例如 Espresso、Robotium)时,我所有的测试都失败了,并在 logcat 中出现了这种警告。

W/InputDispatcher(61):权限被拒绝:从 pid 123 uid 10001 注入事件 W/WindowManager(61):输入事件注入失败。

0 投票
4 回答
11423 浏览

android - getActivity() 调用导致 RuntimeException:无法启动意图 Intent act=android.intent.action.MAIN

更新#1:更多信息添加到这篇文章的末尾

我是 Android 开发和测试的新手。

我有三个浓缩咖啡测试。第一个测试通过,但第二个测试不会运行,因为在第二个测试之前调用 setUp() 方法中的 getActivity() 总是失败:

Blockquote java.lang.RuntimeException:无法在 45 秒内启动 Intent Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=my.packagename/.ActivityMain }。...

第三次测试通过。

我在创建时没有任何长时间运行的操作、动画或网络调用。我可以单击应用程序中的所有菜单项,手动重复测试流程而不会出现问题。

由于某种原因,第一个测试在第二个测试之前“中断”了 setUp() 中的下一个 getActivity() 调用。以下所有测试(在第二次测试之后)将运行正常。

我发现了类似的问题,但看起来它没有解决,而且问题有点不同。

测试代码:

错误跟踪:



更新#1

我为该项目创建了一个干净的 eclipse 项目和一个干净的 Espresso 测试。我能够在 Espresso 测试运行期间重现相同的错误(但我仍然不确定此错误的原因在我的真实应用中是否相同):

目标应用程序有 3 个活动(主要、第二个、第三个)。用户通过单击菜单项在它们之间导航:主要活动开始第二个,第二个活动开始第三个。

我发现如果我在第一次测试中调用 clickMenuItem()(见下文)和 Thread.sleep(500),这会导致在第二次测试之前 getActivity() 调用中的 setUp() 崩溃。如果睡眠超时小于 0.5 秒,则不会发生崩溃。

同时如果调用 Thread.sleep(10000) 并且不调用 clickMenuItem() 也没有崩溃。它将在第一次测试中成功休眠 10 秒,并且也将通过第二次测试。



测试代码:



目标代码:

主要活动:

第二个活动:

第三项活动:

0 投票
2 回答
8738 浏览

android - 如何从 Espresso 生成测试报告

我有一个使用 Ant 在 Jenkins 上成功运行的测试项目。我在控制台输出中看到了测试结果,但如何生成报告?

0 投票
1 回答
2772 浏览

android - intellij + gradle + robolectric + espresso

我正在尝试使用上面列出的框架设置项目。我正在使用这个演示项目deckard-gradle,我无法同步gradle。它说 org.robolectric.gradle:gradle-android-test-plugin:0.9.4-SNAPSHOT 没有找到。我该如何解决?有人做过这项工作吗?这是 build.gradle 文件

0 投票
3 回答
30674 浏览

android - Espresso - 在列表视图中按文本点击

我正在尝试使用 Espresso 在列表视图中单击文本。我知道他们有这个指南,但我不知道如何通过查找文本来完成这项工作。这是我尝试过的

正如预期的那样,这没有奏效。该错误表示层次结构中没有视图。有谁知道如何选择字符串?("ASDF"在这种情况下)提前谢谢。

由于@haffax而更新

我收到错误:

com.google.android.apps.common.testing.ui.espresso.AmbiguousViewMatcherException: 'is assignable from class: class android.widget.AdapterView' 匹配层次结构中的多个视图。

第二个错误

使用此代码

我收到这个错误

com.google.android.apps.common.testing.ui.espresso.PerformException:在视图上执行“加载适配器数据”时出错,内容描述为“MapList”。

引起:java.lang.RuntimeException:找不到匹配的数据:asString(以“ASDF”开头的字符串)


解决方案

onData(anything()).inAdapterView(withContentDescription("desc")).atPosition(x).perform(click())

0 投票
1 回答
2226 浏览

java - 无法为 android 运行 espresso 测试

我在为 android 设置/运行 espresso 测试时遇到了一些问题。我的 TestClass 如下所示:-

AndroidManifest.xml 看起来像这样:-

并且运行配置已更新为使用 Google InGoogleInstrumentationTestRunner作为 InstrumentationRunner。

但是,当我运行测试时,它会在控制台上为我提供以下信息:-

  • 在设备 emulator-5554 上启动仪器 android.test.InstrumentationTestRunner
  • 向 Eclipse 发送测试信息
  • 测试完成

没有提到运行测试并且测试不运行。我在这里能错过什么?

0 投票
1 回答
948 浏览

java - 在 Dalvik 运行时设备上运行 Espresso 仪器测试的问题

我遇到了与FragmentActivity 类似的问题,无法通过 ActivityInstrumentationTestCase2 进行测试

顶级解决方案的问题只适用于使用 Eclipse 构建系统。我正在为我的项目使用 Gradle。

在运行 ART 运行时的 Nexus 5 上,我的 Espresso 仪器测试运行良好。当我在 Dalvik 运行时或模拟器上使用 Nexus 4 时,我遇到了在测试框架之外运行应用程序时不会发生的异常。

在日志中,我发现这些可疑消息类似于链接的问题:

ProgressDialogFragment是一个子类,DialogFragment2它是 Android 支持库的类的子DialogFragment

如果有帮助,这是我的 Gradle 文件中的依赖项:

所以我的问题是如何确保在应用程序 APK 和测试 APK 之间使用相同的支持库?我已经尝试添加instrumentTestCompile 'com.android.support:support-v4:+'以确保相同的支持库版本,但这没有帮助。