Articles of android espresso

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”);

Espresso,当NestedScrollView或RecyclerView在CoordinatorLayout中时滚动不起作用

看起来CoordinatorLayout会破坏Espresso操作的行为,例如scrollTo()或RecyclerViewActions.scrollToPosition() 。 NestedScrollView问题 对于像这样的布局: … … 如果我尝试使用ViewActions.scrollTo()滚动到NestedScrollView内的任何视图,我发现的第一个问题是我得到一个PerformException 。 这是因为此操作仅支持ScrollView而NestedScrollView不会扩展它。 这里解释了这个问题的解决方法,基本上我们可以在scrollTo()复制代码并更改约束以支持NestedScrollView 。 如果NestedScrollView不在CoordinatorLayout但是只要将它放在CoordinatorLayout ,滚动操作就会失败,这似乎有效。 RecyclerView问题 对于相同的布局,如果我用RecyclerView替换NestedScrollView ,则滚动也会出现问题。 在这种情况下,我使用RecyclerViewAction.scrollToPosition(position) 。 与NestedScrollView不同,在这里我可以看到一些滚动发生。 但是,它看起来像滚动到错误的位置。 例如,如果我滚动到最后一个位置,它会显示倒数第二个但不是最后一个。 当我将RecyclerView移出CoordinatorLayout ,滚动工作正常。 目前,由于此问题,我们无法为使用CoordinatorLayout的屏幕编写任何Espresso测试。 任何遇到相同问题或知道解决方法的人?

为什么添加espresso-contrib会导致InflateException?

在我的build.gradle文件中,我有支持库依赖项: compile “com.android.support:appcompat-v7:22.2.0” compile “com.android.support:recyclerview-v7:22.2.0” compile “com.android.support:design:22.2.0” 我也有espresso测试的依赖项: androidTestCompile ‘com.android.support.test.espresso:espresso-core:2.2’ androidTestCompile ‘com.android.support.test.espresso:espresso-intents:2.2’ 此时一切运行正常,但是当我为espresso-contrib添加依赖InflateException ,我的RecyclerView上出现了InflateException android.view.InflateException: Binary XML file line #33: Error inflating class android.support.v7.widget.RecyclerView at android.view.LayoutInflater.createView(LayoutInflater.java:633) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at android.view.LayoutInflater.inflate(LayoutInflater.java:365) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106) … Caused by: java.lang.IllegalStateException: Binary XML file line #33: Unable to find LayoutManager android.support.v7.widget.@2131296518 at […]

如何管理运行时权限android marshmallow espresso测试

我正在使用浓缩咖啡进行测试,但有时我会尝试从外部存储中获取图像,并且使用棉花糖我需要运行时权限,否则会出现exception崩溃,测试将失败。 androidTestCompile ‘com.android.support.test:runner:0.4’ androidTestCompile ‘com.android.support.test:rules:0.4’ androidTestCompile ‘com.android.support.test.espresso:espresso-core:2.2.1’ androidTestCompile ‘com.android.support.test.espresso:espresso-intents:2.2.1’ androidTestCompile(‘com.android.support.test.espresso:espresso-contrib:2.2.1’) { // this library uses the newest app compat v22 but the espresso contrib still v21. // you have to specifically exclude the older versions of the contrib library or // there will be some conflicts exclude group: ‘com.android.support’, module: ‘appcompat’ exclude group: ‘com.android.support’, module: […]

使用Espresso测试Snackbar节目

有没有办法使用Espresso测试小吃店出现的正确文字? 我有一个简单的电话来创建一个小吃吧 Snackbar.make(mView, “My text”, Snackbar.LENGTH_LONG).show(); 我没有运气就试过这个 onView(withText(“My text”)).inRoot(withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));

Espresso意图测试失败

我正在学习使用浓缩咖啡的android仪器测试。 我有一个有抽屉菜单的应用程序,有一个叫做关于的菜单。 我正在测试点击该菜单项和活动内容。 testfunction: @Test public void testNavigationDrawerAboutMenu() { onView(withId(R.id.drawer_layout)) .perform(DrawerActions.open()); //open drawer onView(withText(“About”)).perform(click()); onView(withId(R.id.aboutsptemail)).check(matches(withText(R.string.screen_about_support_email))); onView(withId(R.id.aboutcpright)).check(matches(isDisplayed())); onView(withId(R.id.aboutprivacy)).check(matches(isDisplayed())); onView(withId(R.id.abouttermsconditions)).check(matches(isDisplayed())); onView(withId(R.id.aboutsptemail)).perform(click()); } 现在最后一个textview中嵌入了weblink。 因此,当您点击它时,它会自动在应用程序的Web视图中打开链接(www.support.com)。 我想测试这个function。 所以我试过这个: intended(hasComponent(WebViewActivity.class.getName())); //check if webview called on supportEmail link click 但是此错误跟踪测试失败: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.support.test.espresso.intent.OngoingStubbing android.support.test.espresso.intent.Intents.internalIntending(org.hamcrest.Matcher)’ on a null object reference at android.support.test.espresso.intent.Intents.intending(Intents.java:155) at com.ScanBuy.SmartLabel.NavigationDrawerActivityTests.testNavigationDrawerAboutMenu(NavigationDrawerActivityTests.java:94) at java.lang.reflect.Method.invoke(Native Method) at […]

使用Espresso测试ViewPager。 如何对项目的按钮执行操作?

我有一个ViewPager项目只包含一张图片和一个按钮。 我无法与项目(页面)的UI成功交互,因为除了显示的图片之外,没有什么可以区分(从UI的角度来看) ViewPager所有项目。 我试图只选择一个有位置的项目: onData(is(instanceOf(ItemClass.class))) .atPosition(0) .onChildView(withId(R.id.button)) .perform(click()); 造成: NoMatchingViewException:层次结构中找不到匹配的视图:可从类中分配:class android.widget.AdapterView 如何使用Espresso访问和测试ViewPager项目?

Espresso UI测试无法识别onView()

我花了一整天用Espresso设置Junit4仪器测试,但似乎无法完成最后一步。 无论我做什么,它都无法识别onView()方法。 我已经尝试了多个SDK / support-lib版本,到目前为止还没有。 我已经浏览了所有谷歌设置指南和许多stackoverflowpost,转到这里作为我的最后希望。 Gradle版本: com.android.tools.build:gradle:1.5.0 : com.android.tools.build:gradle:1.5.0 : com.android.tools.build:gradle:1.5.0 Gradle文件: apply plugin: ‘com.android.application’ apply plugin: ‘com.google.gms.google-services’ android { compileSdkVersion 23 buildToolsVersion “23.0.2” useLibrary ‘org.apache.http.legacy’ defaultConfig { applicationId “lv.my.android” minSdkVersion 9 targetSdkVersion 22 testApplicationId “lv.my.android.tests” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } packagingOptions { exclude ‘LICENSE.txt’ exclude ‘META-INF/DEPENDENCIES’ exclude ‘META-INF/LICENSE’ exclude ‘META-INF/NOTICE’ } compileOptions { sourceCompatibility = […]

使用Espresso在索引处选择子视图

使用带有子图像视图的自定义小部件视图时,使用Espresso,我可以使用哪种Matchertypes来选择第n个孩子? 例: +———>NumberSlider{id=2131296844, res-name=number_slider, visibility=VISIBLE, width=700, height=95, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=10.0, y=0.0, child-count=7} | +———->NumberView{id=-1, visibility=VISIBLE, width=99, height=95, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} | +———->NumberView{id=-1, visibility=VISIBLE, width=100, height=95, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, […]