Articles of android espresso

如何使用Espresso在特定位置测试适配器中的项目

我正在尝试使用Espresso(2.0)来validation给定位置的列表适配器项中的文本是否正确,并且在我的生命中我无法找出正确的调用方法。 我的适配器types( IconRowAdapter )包含一个IconRow对象列表。 每个IconRow都有一个getText()方法,它返回该项的文本。 这是非Espresso工作测试代码,用于validation适配器中位置0处的IconRow对象是否具有预期文本(“Artists”)。 public void testHomeActivityMenu() { ListView list = (ListView) getActivity().findViewById(R.id.item_list); IconRowAdapter adapter = (IconRowAdapter) list.getAdapter(); assertEquals(adapter.getItem(0).getText(), “Artists”); } 这很有效。 我尝试了以下Espresso代码的各种变体来做同样的事情, onData(is(instanceOf(IconRowAdapter.class))) .atPosition(0) .check(matches(withItemContent(“Artists”))); 其中withItemContent()看起来像这样: public static Matcher withItemContent(String expectedText) { checkNotNull(expectedText); return withItemContent(equalTo(expectedText)); } @SuppressWarnings(“rawtypes”) public static Matcher withItemContent(final Matcher itemTextMatcher) { checkNotNull(itemTextMatcher); return new BoundedMatcher(IconRow.class) { @Override public boolean […]

如何测试IntentService android?

如何在不使用已弃用的ServiceTestCase情况下在android中测试IntentService ? 从ServiceTestCase的文档: 此类在API级别24中已弃用。请改用ServiceTestRule。 应使用Android测试支持库编写新测试。 但是ServiceTestRule文档说它不支持IntentService : 注意:此规则不支持IntentService,因为当onHandleIntent(android.content.Intent)完成所有未完成的命令时,它会自动销毁。 因此无法保证及时建立成功的连接。 那我该怎么测试一个IntentService呢?

检查回收器中的位置文本

我有方法,我点击我的recyclerView的位置: Espresso.onView(ViewMatchers.withId(R.id.recyclerView)) .perform(RecyclerViewActions.actionOnItemAtPosition(1, ViewActions.click())) 但我怎么能检查我的文字的位置呢?

在使用Espresso进行测试时,如何在Android上的NavigationView中单击menuItem?

如何使用Espresso从设计库中单击NavigationView中的menuItem? 它在整个菜单可见的较大设备上工作正常,但在横向或较小的设备中,我的菜单底部不在屏幕上,我无法想出滚动/滑动到这些menuItem的方法,所以我可以点击它们。 呼叫: onView(withText(R.string.contact_us)).perform(scrollTo()).check(matches(isDisplayed())).perform(click()); 生成以下内容: 引发者:java.lang.RuntimeException:将不执行Action,因为目标视图不匹配以下一个或多个约束:(视图具有有效可见性= VISIBLE并且是a的后代:(可从类中分配:class android .widget.ScrollView或可从类中分配:class android.widget.Horizo​​ntalScrollView))目标视图:“NavigationMenuItemView {id = -1,visibility = VISIBLE,width = 888,height = 144,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 = 0.0,y = 1653.0,text = Contact Us,input-type = 0,ime-target = false,has-links = false}“ […]

升级依赖项后无法解析ActivityTestRule。 无法导入ActivityTestRule

我已经编写了很好的工具测试,但现在获取错误无法在将依赖项升级到之后解决ActivityTestRule错误 androidTestImplementation ‘com.android.support.test:runner:1.0.2’ androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’ 我正在使用android支持版本27.1.1 它与依赖项工作正常 androidTestImplementation ‘com.android.support.test:runner:1.0.1’ androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.1’

Android Mocking Dagger2为Espresso测试注入依赖项

我有一个严重dependency injection( dagger2 )应用程序。 我想在没有测试导航整个应用程序的情况下运行espresso测试 ,并登录到应用程序。 我想从我的teleActivity开始,并模拟登录管理器。 但是在任何@test函数中,我们已经调用了空指针,因为我们调用了onCreate。 如果我在启动活动之前覆盖它(如下所示),则活动为空。 根据我的理解,切换下划线依赖关系的能力是我们使用Dagger2的一个重要原因,否则它只是一个非常过度设计的单例。 如何覆盖,模拟或切换注射到测试匕首模块 – 所以我可以创建这个简单的浓咖啡测试。 注意我还在MVP设计模式中写了所有这些,如果这有所不同。 TeleActivity @Inject TelePresenter mTelePresenter; @Inject public LoginStateManager mLoginStateManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ButterKnife.bind(this); DaggerInjectorTele.get().inject(this); mTelePresenter.setTeleDependencies(this); Intent intent = getIntent(); String searchId = null; if (intent != null) { searchId = intent.getStringExtra(Constants.SEARCH_ID); } mTelePresenter.onCreateEvent(searchId, Helper.makeAuthorizationHeader( // CRASH Null pointer […]

Android测试浮动视图

我向WindowManager添加一个浮动视图,并使其在屏幕上移动,我点击此视图时可以执行点击事件,一切正常。 但是,我不知道如何在espresso或UIAutomator中访问此视图 。 将视图添加到WindowManager final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, type, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSLUCENT ); ImageView floatingView = new ImageView(mContext); floatingView.setContentDescription(“bugtags_fab_des_normal”); mWindowManager.addView(floatingView, layoutParams); 浮动视图 rect中的白蓝色图标是我正在谈论的浮动视图。 题 浮动视图响应单击事件,并执行一些任务,现在我想在AndroidJunit测试中执行此操作。 浓咖啡 我尝试Espresso,使用onView方法,但测试用例: onView(withContentDescription(“bugtags_fab_des_normal”)).perform(click()); 得到: android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with content description: is “bugtags_fab_des_normal” UIAutomator 我尝试UIAutomator Viewer,但我在视图层次结构中找不到floatingView。 怎么样 如何在espresso或uiautomator中访问此视图并执行单击操作? 附录 测试用例 […]

Android APK与Espresso的自动化

我试图自动化我的Android应用程序的一些UI(我没有源代码所以我使用的是APK文件)。 我已经阅读了这里提供的教程以及Google提供的一些教程,但所有教程都需要源代码。 如果有人知道如何在没有源代码的情况下使用Espresso自动化UI,请提供帮助。 我使用IntelliJ作为IDE和app android版本5.0.2。

测试EditText视图是否在Android上没有使用Espresso设置错误文本?

我知道如何测试EditText是否设置了错误文本: editText.check(matches(hasErrorText(“”))); 现在我想测试EditText是否没有错误文本集。 我试过这个,但它不起作用。 editText.check((matches(not(hasErrorText(“”))))); 有谁知道这是怎么做到的吗? 谢谢!

Android Espresso:如何检查Toast消息是否未显示?

我现在正在进行function测试,其中一个我必须测试没有显示吐司信息。 考虑到这是我用来检查是否显示toast消息的代码(此代码有效): onView(withText(R.string.my_toast_message)) .inRoot(withDecorView(not(getActivity().getWindow().getDecorView()))) .check(matches(isDisplayed())); 下面你可以find我用来检查没有显示toast消息的代码(它们都不起作用): 方法一: onView(withText(R.string.error_invalid_login)) .inRoot(withDecorView(not(getActivity().getWindow().getDecorView()))) .check(matches(not(isDisplayed()))); 方法二: onView(withText(R.string.error_invalid_login)) .inRoot(withDecorView(not(getActivity().getWindow().getDecorView()))) .check(doesNotExist()); 任何关于如何检查未显示吐司信息的想法都会非常感激:)