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

android - 使用 Espresso 和 Spoon 运行特定测试

我正在使用EspressoSpoon进行我的 android 测试。我对这些感到非常满意。我唯一的问题是我正在尝试运行特定的测试。我在勺子网站上找到了这个:

gradle 勺子 -PspoonClassName=fully.qualified.TestCase

但我无法让它发挥作用。它仍然运行我所有的测试。有什么建议么?我正在运行这样的命令:

梯度勺-PStressTest=com.espresso.websocket

StressTest我的课在哪里,com.espresso.websocket我的包裹在哪里。

0 投票
2 回答
20028 浏览

android - Espresso - 使用异步加载的数据断言 TextView

我正在使用适用于 Android 的 Google Espresso 编写 UI 测试,但我一直坚持如何断言 TextView 文本,该文本是从 Web 服务异步加载的。我目前的代码是:

在 (1) 上,我通知我的活动从 web 服务加载元素。在 (2) 上,我正在等待断言其内容的视图。这是测试失败的部分,因为它在 web 服务响应应用程序之前执行。

如何让 Espresso 等待特定数据出现在屏幕上?还是我应该以不同的方式思考来编写这样的测试?

0 投票
2 回答
2914 浏览

java - 控制自动化测试何时结束 - Espresso

我正在测试一个不寻常的情况。我正在使用 Espresso 编写测试。我知道 Espresso 和 InstrumentationTestCase 并不打算这样做。

我有一个在我的一个类中创建的监听器,它会通知我某个值的变化。我在我的测试套件中使用监听器。

当我从侦听器获取值时,我需要断言该值已被更改。

我的问题是测试将在我收到来自侦听器的值之前结束。

这是我正在使用的两种方法。一createSpeedDelegate()开始就是调用。然后我打电话sendSpeedChanges。我需要做这个 X 次。


笔记:

  • 检索信息大约需要 200 毫秒(平均)。
  • sendSpeedChanges()在我检查了值之前我不能打电话onSpeedChange()
  • 我不能使用Thread.sleep();,因为监听器在主线程上。

我已经尝试添加一个getInstrumentation().wait(2000);,而且getInstrumentation().waitForIdleSync();显然,两者都不起作用。

在一个完美的世界里,我会这样做:

但是,这不会等待检查值。如果我确实等待该值,测试运行器会认为所有测试都已完成并终止。

我的问题是,是否有办法控制测试何时退出?即使我的测试似乎已经完成。

0 投票
1 回答
2876 浏览

android - 用 Espresso 查找字符串

我正在尝试从我的 UI 视图中读取一个值。这是我用来查找所需字符串的方法。这只会返回textViewid,而不是内容。

如何返回我需要的字符串?

0 投票
1 回答
1379 浏览

android - Android gradle 再次重复 LICENSE.txt 文件

我在 android 上收到此错误(再次!)。最近更新到最新版本的 gradle 0.7.3 以及最新版本的 espresso 框架(1.1),我又回到了臭名昭著的“重复文件”错误。

任务 ':mobile:packageTesttype' 的执行失败。

在 APK META-INF/LICENSE.txt 文件 1 中复制的重复文件:/Users/mwolfe/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.2.4/dba4d4d224e2ca872af5be8d2992777583145478/httpmime-4.2 .4.jar 文件 2:/Users/mwolfe/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.2.4/dba4d4d224e2ca872af5be8d2992777583145478/httpmime-4.2.4.jar

我已经将 build.gradle 文件设置为排除这些文件。该应用程序可以很好地组装以进行调试/发布并运行良好,但是构建/运行以进行测试却失败了。具体来说,当我尝试使用以下命令运行仪器测试时,就会出现上述错误。

我也有一个库项目,并且尝试了各种方式将排除项添加到两个构建文件中。此特定依赖项来自库项目。它们都有以下排除项

我还尝试删除上面的 META-INF 部分,因为它在此处的 espresso 文档中显示:https ://code.google.com/p/android-test-kit/wiki/Espresso#Espresso_Setup_Instructions

我知道我可以从 jar 中删除这些文件,但这很痛苦。

0 投票
7 回答
64956 浏览

android - 检查 Espresso 是否显示对话框

我正在尝试使用新的android-test-kit (Espresso)编写一些测试。但是我找不到有关如何检查是否显示对话框并对其执行一些操作的任何信息(例如单击正面和负面按钮等)。请注意,对话框也可能由 a 显示WebView,而不是由它自己的应用程序显示。

任何帮助,将不胜感激。我只需要一个链接或一些基本示例代码:

  1. 检查是否出现对话框
  2. 执行单击对话框按钮
  3. 与对话框的内部视图交互(如果它是自定义视图)
  4. 在对话框外单击预制件,并检查它是否正在显示(例如,如果setCancelable(false)在对话框构建器上调用并且我们想要检查它)

谢谢指教!

0 投票
0 回答
232 浏览

android - Android 测试不以 ActivityInstrumentationTestCase2 开头

我做了一些测试类来测试android应用程序。

在这种情况下,BTest 中的测试方法不会启动。我想这是因为 ATest 和 BTest extends ActivityInstrumentationTestCase2<FooActivity>

当我写 BTest as itextends ActivityInstrumentationTestCase2<BarActivity>时,测试开始了。

  1. 如何启动扩展的 ATest 和 BTest ActivityInstrumentationTestCase2<FooActivity>
  2. 如果我不能,为什么 BTest 不能启动?

我已经为这两个问题苦苦挣扎了 6 个小时。

请提供您的帮助。谢谢你。

0 投票
1 回答
5414 浏览

android - 带有 doesNotExist 的 Android Espresso onData

我正在尝试验证 aListView不包含特定项目。这是我正在使用的代码:

当名称存在时,由于check(doesNotExist()). 当名称不存在时,我收到以下错误,因为allOf(...)不匹配任何内容:

我怎样才能获得类似的功能onData(...).check(doesNotExist())

编辑:

通过使用 try/catch 并检查事件的 getCause(),我有一个可怕的 hack 来获得我想要的功能。我很想用一种好的技术来代替它。

0 投票
7 回答
32740 浏览

java - 错误=找不到仪器信息:ComponentInfo{ }

我正在尝试进行浓缩咖啡测试,但我不断收到此错误:

它工作过一次,但我无法正确重新创建报告。他们只是空白,没有测试任何东西。我尝试了很多命令,包括

这是我的代码片段:

AndroidManifest.xml

TestStartScreen.java

构建.gradle


如果它意味着什么 -<instrumentation>清单中的属性被涂成红色,就好像 IntelliJ 无法识别它们一样。

任何帮助都很棒,谢谢!

0 投票
2 回答
1876 浏览

unit-testing - 延迟浓缩咖啡无法处理

对于使用 Google Espresso 测试框架测试软件,我有以下问题:

在程序启动时,启动屏幕会启动并初始化整个应用程序。在此之后,我启动了一个请求输入的活动。

在 Espresso 中,应用程序启动并且测试从以下代码开始: onView(withId(R.id.chooseBookTitle)).perform(click());

这会崩溃,因为显示屏仍然显示初始屏幕,并且选择书标题仅在之后可见。如何防止 Google-Espresso 在该键出现之前点击它?

(我不想插入等待循环,但要让它保持事件驱动。在更糟糕的情况下,我会回到 Robotium)