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

android - Android Espresso waitFor.. and Thread.sleep() solution

I've just started using Espresso, before that I have tried Robotium. I need to test LoginActivity. The logic is:

  1. User enters correct credentials;
  2. User sees "Logging in.." string;
  3. User waits for string to disappear;
  4. User is in MainActivity and sees "You're logged in"

testLogin source:

The problem was that espresso didn't wait for "You"re logged in" string to appear, it was trying to find it while logging still was in process.

logcat:

com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: with text: is "You're logged in"

I've tried using Thread.sleep(10000), but it terminates the run on Thread.sleep(10000) and gives me error:

Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''. Check device logcat for details Test running failed: Instrumentation run failed due to 'Process crashed.'

logcat:

@@@ @@@ @@@was killed cancelService in HttpReRegistrationService

Before that, I used the waitForActivity(MainActivity.class) method. Is there any workaround to make this work?

0 投票
3 回答
1581 浏览

android - 在仪器测试中以编程方式设置模拟器/设备方向

在我的仪器测试中,我想在横向和纵向模式下测试一些东西,所以我想在测试开始之前设置方向。有没有办法以编程方式设置设备或模拟器方向?

我知道该setRequestedOrientation()方法,但这适用于某个活动,如果启动另一个活动,我必须记住再次调用它。我正在寻找的是一种“全局”设置方向的方法,以便每个新活动都自动以该方向开始。

更新:

该解决方案必须满足 2 个要求:1)它不会让我更改我的生产代码,2)它需要在 CI 环境中运行。

0 投票
3 回答
4811 浏览

android - 无法运行 android espresso 测试

我正在尝试运行 Android espresso 测试,但他们一直以 java.lang.NoClassDefFoundError: com.blokura.testexample.app.MainActivity 失败

我正在使用 Jake Wharton 的双份浓缩咖啡插件。

我尝试了在github repodeckard上看到的 Jake 的设置,但没有运气。

我不知道我错过了什么。

这是项目结构 项目结构

这是 build.gradle 文件源代码:

EspressoTest.java

MainActivity.java

完整的日志

0 投票
5 回答
6433 浏览

android - 浓缩咖啡 - 设置 SeekBar

有谁知道,如何将 seekBar 设置为特定值或只需单击 Espresso UI 测试上的该视图?

我只是得到一个例外:在带有 id 的视图上执行“单击”时出错...

0 投票
2 回答
13730 浏览

android - 使用 Espresso 进行测试时如何提供模拟数据

我们有一个非常大的 Android 应用程序,没有任何测试。我们正在遭受典型的质量/太长的手动回归测试周期问题。

作为一个服务器端开发者,刚接触Android,我想介绍一下开发者测试。

我可以看到如何使用 JUnit 对普通 Java 代码进行单元测试。

然而,活动/片段/适配器被证明更加困难。

我看了 GTAC 的 Espresso 视频,印象深刻并决定使用它。

我苦苦挣扎的地方是如何为我的测试用例提供模拟数据,然后确认显示。

这甚至可能吗?似乎 Espresso 用于黑盒测试,这极大地限制了它对开发人员(其目标受众)的使用,因为(通常)黑盒测试是由 QA 完成的。

0 投票
2 回答
1399 浏览

android - 浓缩咖啡:如何单击列表视图中的图像之一?

帮助!!!

我想在 Espresso 中测试 android ui,但图像每次都会改变。

我尝试这种方式,但仍然无法点击:

错误日志:

0 投票
1 回答
694 浏览

android - 虚拟设备上的仪器测试失败

我正在使用 Jake Wharton 的Double Espresso库在我的应用程序中设置仪器测试。测试在我的手机上运行良好,但在任何虚拟设备上都会崩溃(我尝试了模拟器和 Genymotion 设备)。

我得到的错误是IllegalAccessError[previous](( Instrumentation run failed due to 'java.lang.IllegalAccessError'. Gradle + Espresso )。然而,令我困惑的是为什么它只发生在虚拟设备上。设置应该如果它能够在物理设备上运行就可以了。

堆栈跟踪包括所有地方的错误,但报告为致命的错误是:

无论如何,我尝试排除所有可能发生冲突的库,但我仍然无法让它工作。有没有人对问题可能是什么甚至如何排除故障有任何想法?

该问题似乎也与daggger应用程序中使用的问题有关。MyApp:32 指向ObjectGraph创建的行,以下两行在堆栈跟踪中。

**更新:** 该问题可能与虚拟设备上的 Dalvik VM 有关。我的手机设置为 ART 并且之前曾报告与 Dalvik 类似的问题。应该通过添加以下内容来修复它:

根据图书馆页面,但这似乎没有帮助。

0 投票
1 回答
852 浏览

android - 带有 ViewPager、FragmentStatePagerAdapter 和 api 调用的 Espresso

我有一个活动 MainActivity,它由一个带有选项卡的 ViewPager 组成,用于在不同页面(片段)之间切换。在第一页(FragmentA,onResume())上,我执行一个 api 调用来获取数据并为该页面 onResume() 设置视图。这个页面可以被认为是我的主页,所有的动作都来源于此。

如果我使用 AsyncTask,Espresso 是否应该自动等待 - 一旦我启动 MainActivity - 从第一页片段进行的 api 调用完成?或者我是否需要针对这种情况实施 IdlingResource/Sleep?我不确定 FragmentStatePagerAdapters 和 ViewPagers 的线程是如何工作的。

这是测试这个的最好方法吗?我是否需要重构代码以从 MainActivity 而不是在片段中进行 api 调用等?

0 投票
1 回答
999 浏览

android - 有没有办法为 Espresso 测试(或类似的东西)设置构建配置字段?

我正在Android中进行自动化测试,我正在尝试找出一种方法来确定 - 在代码中 - 它是否通过 Espresso 执行。我遇到了以下情况:

但这不起作用。我可以做类似的事情吗?有没有办法在 build.gradle 中为 Espresso 测试添加 buildConfigField?

0 投票
1 回答
778 浏览

android - 使用 Espresso 测试 Android 组件

我有许多自定义 Android 组件,并希望使用 Espresso 对其进行测试。在针对 Espresso 测试运行时,Activity我在目录中添加了一个简单的Activity类,该类以androidTest编程方式创建一个视图,其中包含我的组件,准备好进行测试。

例如,如果我正在测试一个MyView组件,那么我的 Espresso 测试类可能看起来像这样:

简单MyViewTestActivity如下:

我的问题是我似乎需要将测试Activity类(在这种情况下)添加MyViewTestActivity到 mainAndroidManifest.xml以使其工作,否则Unable to resolve activity for: Intent...在尝试运行测试时会收到错误消息。但是我现在在主清单中有测试活动,这似乎是一件坏事。

如何设置测试清单中包含但不是主要的特定于测试的活动?

我正在使用基于 gradle 的 Android 构建系统。