Articles of android espresso

如何启用Espresso Test Recording

截至昨天的Google IO Keynote,我们在项目中进行UI测试的方式似乎有了重大更新。 由于采用了新的测试记录function,自动化测试即将迈出一大步。 开发人员将能够开始录制并开始使用他们的应用程序。 在执行每个操作时,它会转换为Espresso代码,可以在多个平台上播放,包括Google的云测试实验室。 这可能会缩短将测试编写为过去十分之一的时间。 我安装了最新版本的Android Studio 2.2 Preview 1,我想知道如何启用此function。

Android Espresso问题 – 依赖冲突

我正在尝试将espresso集成到我的ui测试应用程序中。 这是我在Gradle中的依赖项 dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘com.android.support:appcompat-v7:22.2.0’ compile ‘com.android.support:design:22.2.1’ compile ‘com.github.bumptech.glide:okhttp-integration:1.3.1@aar’ compile ‘com.squareup.okhttp:okhttp:2.0.0’ compile ‘de.hdodenhof:circleimageview:1.3.0’ compile ‘com.android.support:cardview-v7:21.+’ compile ‘com.android.support:recyclerview-v7:21.+’ androidTestCompile ‘com.android.support.test.espresso:espresso-core:2.2’ androidTestCompile ‘com.android.support.test.espresso:espresso-contrib:2.2’ compile ‘com.android.support:support-annotations:22.2.0’ androidTestCompile ‘com.android.support.test:runner:0.3’ compile project(‘:common’) compile project(‘:service’) } 所以我的espresso依赖项都包括在内。 但是,当我尝试构建时,我收到此错误: Warning:Conflict with dependency ‘com.android.support:support-annotations’. Resolved versions for app (22.2.1) and test app (22.2.0) differ. 有没有人遇到过这个? 我发现它在这里报道但是没有解决方案。 有人有解决方法吗?

不推荐使用espresso contrib的openDrawer

Espresso contrib( com.android.support.test.espresso:espresso-contrib:2.2.1 )openDrawer方法已弃用 那我该怎么打开抽屉?

成功点击并阻止60秒后Espresso测试失败

我尝试过使用Espresso测试框架并编写了一个简单的测试。 没有什么花哨的,只有这个代码: onView(withId(R.id.login_button_stub)).perform(click()); 测试在Nexus 5设备和Genymotion与Android 5.0上运行良好,但在Android Emulator 4.x,5.0,Genymotion 2.3,4.x和LG G2与Android 4.x上运行失败。 在所有这些设备/模拟器/模拟器上,单击按钮并执行其操作(在我的情况下转到另一个屏幕)。 问题是它在某些设备上perform阻塞。 这在60秒后以一个很好的例外结束: android.support.test.espresso.PerformException: Error performing ‘single click’ on view ‘with id: com.vielengames.mock:id/login_button_stub’. … Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3544 iterations over 60 SECONDS. The following Idle Conditions failed . … 请注意,没有关于哪些条件失败的信息。 查看Espresso源代码,应该有一个以逗号分隔的问题列表。 这是完整的代码: TestCase.java 。 和完整的堆栈跟踪: I/TestRunner﹕ android.support.test.espresso.PerformException: Error performing ‘single click’ on […]

Android Espresso – 如何检查EditText提示?

我开始玩Espresso,让我的基本测试运行。 现在试图弄清楚如何检查我的编辑文本是否有特定的提示文本? 谢谢。 onView(withId(R.id.locationInput)).check(matches…?)

Android Espresso检查选择的微调文本

我的Espresso测试中有这个代码 onView(withId(R.id.src)) .perform(click()); onData(hasToString(startsWith(“CCD”))) .perform(click()); onView(withId(R.id.src)) .check(matches(withText(containsString(“CCD”)))); 我要做的是单击Spinner的项目并检查它是否确实在Spinner被选中。 但是我收到了这个错误: android.support.test.espresso.base.DefaultFailureHandler $ AssertionFailedWithCauseError:’with text:包含“CCD”的字符串与所选视图不匹配。 预期:带文字:包含“CCD”的字符串得到:“AppCompatSpinner {id = 2131558533,res-name = src,visibility = VISIBLE,width = 528,height = 163,has-focus = false,has-focusable = true, has-window-focus = true,is-clickable = true,is-enabled = true,is-focused = false,is-focusable = true,is-layout-requested = false,is-selected = false,root-is- layout-requested = false,has-input-connection = false,x = 0.0,y = 0.0,child-count = 1}“

Android测试构建错误:多个dex文件定义了Landroid / support / test / BuildConfig

我正在尝试将Espresso 2添加到我的项目中(它还有很多其他依赖项),但是在尝试运行测试时我遇到了这个错误: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/test/BuildConfig; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) … 非测试版本工作正常。 有没有人有关于调试此方法的最佳方法的任何提示? 我试过运行./gradlew -q ::dependencies ,但我看不出任何明显的问题(虽然我对解释它的输出./gradlew -q ::dependencies ): androidTestCompile – Classpath for compiling the androidTest sources. +— com.squareup.spoon:spoon-client:1.1.2 +— com.google.dexmaker:dexmaker-mockito:1.0 | +— com.google.dexmaker:dexmaker:1.0 | \— org.mockito:mockito-core:1.9.5 | +— org.hamcrest:hamcrest-core:1.1 | \— org.objenesis:objenesis:1.0 +— com.google.dexmaker:dexmaker:1.0 +— org.mockito:mockito-core:1.9.5 […]

Android Espresso,测试前唤醒设备。 如何使用自定义清单进行测试?

我一直在用androids新的espresso框架编写测试,并发现它运行良好。 一个恼人的事情(特别是浓缩咖啡)是我必须确保我的屏幕醒来并解锁以便运行测试。 我发现了一种解决方法(通过各种来源),但我不确定整合它的最佳方法。 所以这就是我所做的,在我的“Home”活动中,我有以下代码: Home.class: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /************ Put this in a conditional for a test version ***********/ KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); KeyguardManager.KeyguardLock keyguardLock = km.newKeyguardLock(“TAG”); keyguardLock.disableKeyguard(); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); } 您还需要添加以下权限: 所以在这样做之后,我的测试现在唤醒我的手机运行所以我没有必须站岗并确保屏幕在测试开始之前没有关闭。 我宁愿不在我的应用程序中包含这些权限。 我知道使用gradle可以制作具有自己的android清单的不同“风味”,它将合并到主清单中。 我正在考虑使用它,但我不想仅仅为了这个原因添加一种味道,因为这已经使用了测试构建types来运行。 从android gradle文档看起来,您无法为instrumentTest目录创建AndroidManifest,因为它将自动生成。 但是,我想知道是否有其他方法可以在不创建variables的情况下执行此操作,然后指定测试应该运行该变体。 此外,我不确定所有这些的确切语法,并认为只是在网站上为其他人提供此信息会很好,因为它似乎分散了。 最后,如果有人知道更好的方法来解决唤醒手机测试的问题,我很乐意听到它,因为我不是这种方式的忠实粉丝,我正在尝试。

Espresso匹配第一个元素,当许多人在层次结构中时

我正在尝试根据我的function编写一个espresso函数来匹配第一个espressofind的元素,即使find了多个匹配的项目。 例如:我有一个包含商品价格的单元格的列表视图。 我希望能够将货币兑换成加元并validation商品价格是否为加元。 我正在使用这个function: onView(anyOf(withId(R.id.product_price), withText(endsWith(“CAD”)))) .check(matches( isDisplayed())); 这会抛出AmbiguousViewMatcherException。 在这种情况下,我不关心有多少或几个单元格显示CAD,我只是想validation它是否显示。 有没有办法让espresso在遇到符合参数的物体时立即通过此测试?

Espresso – TextView包含String

很简单,如何在给定的TextView包含Espresso中的特定字符串。 相当于: myStrings.contains(“Subby”);