Espresso 测试SwipeRefreshLayout 组件,下拉问题记录
来源:互联网 发布:数值策划 知乎 编辑:程序博客网 时间:2024/06/08 01:11
package com.umeng.community.example.feedlist;import android.support.test.espresso.IdlingPolicies;import android.support.test.rule.ActivityTestRule;import android.support.test.runner.AndroidJUnit4;import android.test.suitebuilder.annotation.LargeTest;import com.umeng.comm.core.impl.FeedAPIImpl;import com.umeng.comm.core.listeners.Listeners;import com.umeng.comm.core.nets.responses.FeedsResponse;import com.umeng.community.example.MainTestActivity;import com.umeng.community.example.R;import org.json.JSONException;import org.json.JSONObject;import org.junit.Before;import org.junit.Rule;import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.ArgumentCaptor;import org.mockito.Captor;import org.mockito.Mock;import org.mockito.MockitoAnnotations;import java.util.concurrent.TimeUnit;import static android.support.test.espresso.Espresso.onView;import static android.support.test.espresso.action.ViewActions.swipeDown;import static android.support.test.espresso.assertion.ViewAssertions.matches;import static android.support.test.espresso.matcher.ViewMatchers.hasFocus;import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;import static android.support.test.espresso.matcher.ViewMatchers.withId;import static android.support.test.espresso.matcher.ViewMatchers.withParent;import static android.support.test.espresso.matcher.ViewMatchers.withText;import static org.hamcrest.Matchers.allOf;import static org.mockito.Mockito.verify;/** * Created by admin on 16/6/15. */@RunWith(AndroidJUnit4.class)@LargeTestpublic class RealTimeFeedListTest { // UiDevice mDevice; @Mock protected FeedAPIImpl request; @Captor private ArgumentCaptor feedsResponseArgumentCaptor; @Rule public ActivityTestRule<MainTestActivity> mainActivityTestRule = new ActivityTestRule<MainTestActivity>(MainTestActivity.class){ @Override protected void beforeActivityLaunched() { super.beforeActivityLaunched(); } }; @Before @SuppressWarnings("unchecked") public void setup(){ // Mockito has a very convenient way to inject mocks by using the @Mock annotation. To // inject the mocks in the test the initMocks method needs to be called. MockitoAnnotations.initMocks(this); //mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); } @Test public void testLauchActivityFirtDisplayRealTimeFeedList() { onView(withId(R.id.umeng_comm_segment_view)).check(matches(isDisplayed())); // String text[] = mainActivityTestRule.getActivity().getResources().getStringArray(R.array.umeng_simplify_feed_titles); onView(withText(text[0])).check(matches(isDisplayed())).check(matches(withParent(withId(R.id.umeng_comm_segment_view)))); onView(withText(text[1])).check(matches(isDisplayed())).check(matches(withParent(withId(R.id.umeng_comm_segment_view)))); //onView(withId(R.id.umeng_comm_ll)).check(matches(isDisplayed())); onView(withId(R.id.umeng_comm_feeds_frag_id)).check(matches(isDisplayed())); //onView(withId(R.id.umeng_comm_segment_view)).check(matches(withChild(withText(text[0])))); // onView(withId(R.id.umeng_comm_segment_view)).check(matches(withChild(withText(text[1])))); // onView(withText(text[1])).check(matches(isDisplayed())); // onView(withText(text[0])).inRoot(matcheswithId(R.id.umeng_comm_segment_view)); } @Test public void testDispalyDataRightInRealTimeFeedList() { onView(withId(R.id.umeng_comm_feeds_frag_id)).check(matches(isDisplayed())); //onView(withId(R.id.umeng_comm_feeds_frag_id)).perform(swipeLeft()); // onView(withId(R.layout.umeng_simplify_feeds_frgm_layout)).check(matches(isDisplayed())); onView(allOf(withId(R.id.umeng_comm_swipe_layout),hasFocus())).check(matches(isDisplayed())); // onView(allOf(withId(R.id.umeng_comm_swipe_layout),hasFocus())).perform(swipeDown()); onView(allOf(withId(R.id.umeng_comm_feed_listview),hasFocus())).check(matches(isDisplayed())); IdlingPolicies.setMasterPolicyTimeout(100, TimeUnit.SECONDS); onView(allOf(withId(R.id.umeng_comm_feed_listview),hasFocus())).perform(swipeDown()); // viewInteraction.check(matches(isDisplayed())); //viewInteraction.perform(swipeDown());// UiObject myApp = mDevice.findObject(new UiSelector().className(com.umeng.common.ui.widgets.RefreshLvLayout.class));// myApp.swipeDown(10); String aa = "{\n" + " \"navigator\": \"http://api.wsq.umeng.com/v2/feeds/stream?start=20&count=20&read_tag=2359797\",\n" + " \"visit\": true,\n" + " \"items\": [\n" + " {\n" + " \"status\": 0,\n" + " \"liked\": false,\n" + " \"related_user\": [],\n" + " \"seq\": 2385157,\n" + " \"creator\": {\n" + " \"status\": 0,\n" + " \"name\": \"Sofia\",\n" + " \"source_uid\": \"gz@usc.edu\",\n" + " \"level\": 0,\n" + " \"gender\": 0,\n" + " \"has_followed\": false,\n" + " \"atype\": 0,\n" + " \"custom\": null,\n" + " \"medal_list\": [],\n" + " \"icon_url\": {\n" + " \"240\": \"http://c-54d19014ee785020801f83c4.image.alimmdn.com/2016-06-17/5714a06b7019c91edf031dc8/c7c8495740c87749b0f85b6853b73f88@240w_240h_0e_1l_75Q\",\n" + " \"640\": \"http://c-54d19014ee785020801f83c4.image.alimmdn.com/2016-06-17/5714a06b7019c91edf031dc8/c7c8495740c87749b0f85b6853b73f88@640w_640h_0e_1l_75Q\",\n" + " \"origin\": \"http://c-54d19014ee785020801f83c4.image.alimmdn.com/2016-06-17/5714a06b7019c91edf031dc8/c7c8495740c87749b0f85b6853b73f88\"\n" + " },\n" + " \"id\": \"5763919fd014631f3b1ef68a\"\n" + " },\n" + " \"forward_count\": 0,\n" + " \"ban_user\": false,\n" + " \"is_topic_top\": null,\n" + " \"image_urls\": [],\n" + " \"is_top\": 0,\n" + " \"create_time\": \"2016-06-17 14:11:55\",\n" + " \"user_mark\": 0,\n" + " \"media_type\": 0,\n" + " \"id\": \"576394abee785022af4c2b05\",\n" + " \"likes_count\": 0,\n" + " \"has_collected\": false,\n" + " \"title\": \"\",\n" + " \"origin_feed\": [],\n" + " \"permission\": 0,\n" + " \"custom\": \"\",\n" + " \"content\": \"挺好的呀啊\",\n" + " \"rich_text\": \"\",\n" + " \"rich_text_url\": \"http://api.wsq.umeng.com/v2/feed/rich_text?feed_id=576394abee785022af4c2b05\",\n" + " \"comments_count\": 0,\n" + " \"location\": null,\n" + " \"parent_feed_id\": \"\",\n" + " \"media_info\": [],\n" + " \"is_recommended\": false,\n" + " \"tag\": 0,\n" + " \"type\": 0,\n" + " \"topics\": [\n" + " {\n" + " \"create_time\": \"2016-04-19 13:16:12\",\n" + " \"name\": \"运营讲堂\",\n" + " \"icon_url\": null,\n" + " \"description\": null,\n" + " \"id\": \"5715bf1c55c40008641d6c3d\",\n" + " \"image_urls\": [],\n" + " \"custom\": \"\"\n" + " }\n" + " ],\n" + " \"share_link\": \"http://wsq.umeng.com/feeds/576394abee785022af4c2b05/\"\n" + " }\n" + " ]\n" + "}"; JSONObject js = null; try { js = new JSONObject(aa); } catch (JSONException e) { e.printStackTrace(); } FeedsResponse feedsResponse= new FeedsResponse(js); verify(request).fetchMyFollowedFeeds((Listeners.FetchListener<FeedsResponse>) feedsResponseArgumentCaptor.capture()); ( (Listeners.FetchListener<FeedsResponse>)feedsResponseArgumentCaptor.getValue()).onComplete(feedsResponse); }}
配置:
dependencies { compile project(':umeng_community_library_simplify')// {// exclude(module:'umeng_community_core')// } compile project(':umeng_community_library_db') // Dependencies for local unit tests testCompile "junit:junit:4.12" testCompile "org.mockito:mockito-all:1.10.19" testCompile "org.hamcrest:hamcrest-all:1.3" //Dependencies for Anroid unit tests androidTestCompile ('com.android.support.test:runner:0.4.1') androidTestCompile ('com.android.support.test:rules:0.4.1'){ exclude group:'com.android.support.test',module:'runner' } // Dependencies for Android unit tests //androidTestCompile "junit:junit:4.12" androidTestCompile "org.mockito:mockito-core:1.10.19" androidTestCompile 'com.google.dexmaker:dexmaker:1.2' androidTestCompile ('com.google.dexmaker:dexmaker-mockito:1.2'){ exclude group:'org.mockito:',module:'mockito-core' } //Espresso UI Testing androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.1'){ exclude group:'com.android.support.test',module:'runner' exclude group:'com.android.support.test',module:'rules' // exclude group:'org.hamcrest:',module:'hamcrest-library' } androidTestCompile ("com.android.support.test.espresso:espresso-contrib:2.2.1"){ exclude group:'com.android.support.test.espresso',module:'espresso-core' exclude group:'com.android.support',module:'support-v4' } androidTestCompile ("com.android.support.test.espresso:espresso-intents:2.2.1"){ exclude group:'com.android.support.test.espresso',module:'espresso-core' }
android.support.test.espresso.PerformException: Error performing 'fast swipe' on view '(with id: com.umeng.community.example:id/umeng_comm_feed_listview and has focus on the screen to the user)'.
at android.support.test.espresso.PerformException$Builder.build(PerformException.java:83)at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:70)
at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:53)
at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:184)
at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115)
at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87)
at com.umeng.community.example.feedlist.RealTimeFeedListTest.testDispalyDataRightInRealTimeFeedList(RealTimeFeedListTest.java:103)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55)
at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:257)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:54)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:240)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1886)
Caused by: android.support.test.espresso.AppNotIdleException: Looped for 4370 iterations over 100 SECONDS. The following Idle Conditions failed .
at android.support.test.espresso.IdlingPolicy.handleTimeout(IdlingPolicy.java:61)
at android.support.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:477)
at android.support.test.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:408)
at android.support.test.espresso.base.UiControllerImpl.injectMotionEvent(UiControllerImpl.java:226)
at android.support.test.espresso.action.MotionEvents.sendUp(MotionEvents.java:138)
at android.support.test.espresso.action.Swipe.sendLinearSwipe(Swipe.java:104)
at android.support.test.espresso.action.Swipe.access$100(Swipe.java:31)
at android.support.test.espresso.action.Swipe$1.sendSwipe(Swipe.java:38)
at android.support.test.espresso.action.GeneralSwipeAction.perform(GeneralSwipeAction.java:70)
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction.java:144)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5432)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
0 0
- Espresso 测试SwipeRefreshLayout 组件,下拉问题记录
- 下拉组件 SwipeRefreshLayout
- 下拉刷新组件SwipeRefreshLayout
- 下拉刷新组件SwipeRefreshLayout
- Android官方出品SwipeRefreshLayout下拉刷新组件
- 【SwipeRefreshLayout】Google官方下拉刷新组件
- Google官方下拉刷新组件---SwipeRefreshLayout
- Google官方下拉刷新组件---SwipeRefreshLayout
- Google官方下拉刷新组件 SwipeRefreshLayout
- Google官方下拉刷新组件---SwipeRefreshLayout
- Google官方下拉刷新组件---SwipeRefreshLayout
- android之官方下拉刷新组件SwipeRefreshLayout
- SwipeRefreshLayout组件 实现ListView下拉刷新
- SwipeRefreshLayout组件 自己实现ListView下拉刷新
- android之官方下拉刷新组件SwipeRefreshLayout
- Google下拉刷新组件---SwipeRefreshLayout(一)
- android swipeRefreshLayout 下拉刷新 google官方组件
- android swipeRefreshLayout 下拉刷新 geogle官方组件
- 广东海洋大学 电子1151 孔yanfei python语言程序设计 第四周
- 一. Windows程序内部运行机制--Windows编程课程学习笔记
- Openstack liberty 创建实例快照源码分析1
- Java Bean、POJO、 Entity、 VO 、PO、DAO
- 关于android Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.的解决方法
- Espresso 测试SwipeRefreshLayout 组件,下拉问题记录
- SVN e155004 locked
- java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- 大数据的仓库Hive学习(一)
- 笔记︱金融风险控制基础常识——巴塞尔协议+信用评分卡Fico信用分
- 20160620学习整理
- 第十一周上机实践-点圆圆柱族类设计(补)
- 企业该如何正确选择即时通讯软件
- org.apache.commons.lang.StringUtils(StringUtils工具类的常用方法)